如何让VS2008在C ++项目中使用__cdecl而不是__thiscall?

时间:2013-02-18 23:04:02

标签: c++ visual-studio-2008 linker

我正在尝试在Visual Studio 2008中构建一个开源C ++项目。我加载解决方案文件并编译所有内容,但由于找不到某些方法,我收到了一堆链接错误。在使用DUMPBIN.EXE检查有问题的.lib文件之后,我可以看到问题所在:.lib中的方法在其签名中都有__cdecl,而链接器正在寻找等效的方法{ {1}}而是。

如何让VS 2008改为使用__thiscall

注意:项目是a fork of CCV,这是一个基于OpenCV的多点触控追踪程序。这个分支的目的是通过相机制造商提供的FlyCapture2库为称为Flea3的相机提供支持。以下是链接器错误:

__cdecl

2 个答案:

答案 0 :(得分:0)

默认情况下,Visual Studio将__thiscall用于成员函数。由于它正确编译,看起来你的库中的头文件没有显式声明调用约定。

听起来你需要对库使用C链接。尝试使用

包装库头
extern "C" { }

答案 1 :(得分:0)

问题是我正在连接外部FlyCapture2库的64位版本。切换到32位版本解决了这个问题。