我正在尝试在Visual Studio 2008中构建一个开源C ++项目。我加载解决方案文件并编译所有内容,但由于找不到某些方法,我收到了一堆链接错误。在使用DUMPBIN.EXE检查有问题的.lib文件之后,我可以看到问题所在:.lib中的方法在其签名中都有__cdecl
,而链接器正在寻找等效的方法{ {1}}而是。
如何让VS 2008改为使用__thiscall
?
注意:项目是a fork of CCV,这是一个基于OpenCV的多点触控追踪程序。这个分支的目的是通过相机制造商提供的FlyCapture2库为称为Flea3的相机提供支持。以下是链接器错误:
__cdecl
答案 0 :(得分:0)
默认情况下,Visual Studio将__thiscall用于成员函数。由于它正确编译,看起来你的库中的头文件没有显式声明调用约定。
听起来你需要对库使用C链接。尝试使用
包装库头extern "C" { }
答案 1 :(得分:0)
问题是我正在连接外部FlyCapture2库的64位版本。切换到32位版本解决了这个问题。