0

在 VS2005 中,我使用 _cdecl 调用约定并且项目构建时没有任何链接器错误。在将项目移植到 VS2008 时将调用约定更改为 _stdcall 后,出现以下错误:

错误 LNK2001:无法解析的外部符号 __imp__GCBOpen@8。

Configuration Settings>C\C++>Genral>Common Language Runtime support 设置为 No Common Language Runtime support

我需要有关为解决问题而需要完成的任何项目设置或代码更改的帮助。任何帮助表示赞赏。

4

1 回答 1

2

它看起来像GCBOpen()已编译__cdecl,但它的声明没有明确说明。(这就是为什么它在您的默认设置时链接正常,__cdecl但在您更改它时中断。)通常,在外部库中声明函数以指定调用约定以避免诸如您遇到的问题之类的问题是一种很好的做法。

某处你必须有类似的东西:

__declspec(dllimport)
extern int GCBOpen(int, int);

这会更好:

#define CALLCONV __cdecl
__declspec(dllimport)
extern int CALLCONV GCBOpen(int, int);
于 2010-08-09T20:20:32.617 回答