我在使用Qt Creator时遇到一个奇怪的问题,无法在Visual Studio中重现。
对于我正在处理的项目,我必须使用第三方dll,为此,我需要在代码中还包含一个适当的头文件。但是,即使头文件具有一组
#ifndef VICON
#define VICON
//...
#endif // VICON
警惕,一旦我将 header 包含在多个源代码文件中(直接或间接),就会出现以下链接错误:
我可以为您提供源代码,但这似乎无关紧要,即使我没有从此DLL调用任何内容,只要相关头文件出现在多个位置,我都会得到上述错误。如果头文件只放在一个地方,没问题,然后我可以调用它的内容,一切都会按预期进行。
这是我在.pro文件中包含dll的方式,希望它是正确的方法:
INCLUDEPATH += .
win32:LIBS += ViconDataStreamSDK_CPP.lib
(并且相关的lib,dll和h文件都在当前目录中)
我正在Windows 7上进行编码。
最佳答案
在我看来,该库可能会在头文件中定义operator<<
函数,但忘记将其标记为static
或inline
。这意味着它将在所有源文件(包括头文件)中定义,并且您将得到描述的链接器错误。