Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MSVC 2015 GetComputerName未解决的外部符号问题_C++_Visual Studio_Winapi - Fatal编程技术网

C++ MSVC 2015 GetComputerName未解决的外部符号问题

C++ MSVC 2015 GetComputerName未解决的外部符号问题,c++,visual-studio,winapi,C++,Visual Studio,Winapi,有三个动态链接库:A、B、C 库A在system命名空间中导出两个函数:IsRemoteSession()和GetComputerName() 库B与库a有静态链接,并使用这两种功能。没有链接错误 库C与库a有一个静态链接,并使用这两个函数。存在链接错误: LNK2019:调试和发布配置中未解析的外部符号“GetComputerName” B和C的项目属性相同 MSVC 2008中没有链接错误 我找到的唯一解决方法是将GetComputerName重命名为其他名称 还有其他人遇到这个错误吗 附言

有三个动态链接库:A、B、C

库A在
system
命名空间中导出两个函数:
IsRemoteSession()
GetComputerName()

库B与库a有静态链接,并使用这两种功能。没有链接错误

库C与库a有一个静态链接,并使用这两个函数。存在链接错误:

LNK2019:调试和发布配置中未解析的外部符号“GetComputerName”

B和C的项目属性相同

MSVC 2008中没有链接错误

我找到的唯一解决方法是将GetComputerName重命名为其他名称

还有其他人遇到这个错误吗

附言。
\undef GetComputerName
没有帮助。

这是因为
windows.h
中有“#define”


它在A和B库中将我所有的
GetComputerName
重命名为
GetComputerNameA
,而不是C库。

也是Windows API调用的名称。与所有其他传递字符串参数的Windows API调用一样,它是一个预处理器符号,可扩展为
GetComputerNameA
GetComputerNameW
。您可能正在导出或导入与您认为的符号不同的符号。是的,我知道,但是:库B与库a有一个静态链接,并使用这两个函数。没有链接错误。而且,
#undef GetComputerName
没有帮助。尽管如此,根据提供的信息,这个问题仍然无法回答。A是必需的,理想情况下,它包括确切的错误消息以及LIB文件的DUMPBIN输出。我猜
windows.h
的包含顺序在B和A中都起到了作用,并重命名了所有
GetComputerName
,但不在C中。链接器找不到它,因为它被调用了。类似于A中的
GetComputerNameA
GetComputerNameW
。对于测试,您可以查看导出或尝试在C中定义GetComputerNameA或
W
。这不是解决方案。如果仅在库A中使用
#undef GetComputerName
,则仍在尝试在库B和库C中导入错误的符号。必须确保在所有3个位置使用相同的符号。还要考虑使用/保留全局命名空间。