0

我正在尝试使用 Visual Studio 2008 使用第三方库编译我的项目。现在问题是我将 lib 文件添加到 LINKER 输入,更新了其他库位置 - 确保确实读取了 lib 文件(已删除额外的位置和编译失败,尖叫着找不到lib文件)。我使用 dumpbin 检查了 lib 中存在的导出,并且该功能存在。

然而,从该库调用函数时,我仍然收到错误 LINK2019 unresolved bla bla bla。有人遇到过类似的事情/有任何想法吗?也许值得一提的是,我尝试使用的库似乎是使用 VS2003 编译的。

更新: 库标题中出现的定义:

#ifndef X
#define X

#ifdef _cplusplus
extern "C" {
#endif

_XFUNC int X_Open(int C);

#ifdef _cplusplus
}
#endif
#endif

以及导出的定义:(在库头中包含的另一个头中)

#ifdef _BUILDXDLL
    #define _XFUNC __declspec (dllexport)
#else
    #ifdef WIN32
        #define _XFUNC __declspec (dllimport)
    #else
        #define _XFUNC
    #endif
#endif

完整的错误信息:

error LNK2019: unresolved external symbol _X_Open referenced in function "public virtual bool __thiscall MyClass::initialise(class QDomElement*)"(?initialise@MyClass@@UAE_NPAV QDomElement @@@Z)

我不确定它是否相关,但声明是*X_Open*并且在错误消息中它显示为*_X_Open* 提前致谢,Anorflame

4

1 回答 1

0

突破! 问题在于调用约定。我的项目设置为 __cdecl(/Gd),而第 3 方库是使用 __stdcall(/Gz) 编译的(这解释了为什么链接器将 _ 连接到 X_Open)。

这把我带到了另一个问题——但这已经是另一个问题了。

于 2012-07-19T15:39:28.967 回答