gpt4 book ai didi

c++ - 为什么 visual studio 2010 寻找 __thiscall 而不是 __cdecl 调用约定?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:31:05 25 4
gpt4 key购买 nike

总的来说,我正在尝试将 opencv 测试程序与我使用 64 位 visual studio 2010 专业版编译的 opencv 库链接起来。一个示例错误是:

1>webcamtest.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall cv::VideoCapture::isOpened(void)const " (?isOpened@VideoCapture@cv@@UBE_NXZ)

问题是为什么__thiscall,当它链接的opencv_highui249.dll包含

Symbol name  : ?isOpened@VideoWriter@cv@@UEBA_NXZ (public: virtual bool __cdecl cv::VideoWriter::isOpened(void)const )

__cdecl 是有道理的,这表明该库已正确构建。链接测试程序时,正在搜索 opencv_highui249.dll,因此构建标志似乎是正确的,但显然我遗漏了什么?

最佳答案

你确定你使用了 x64 库吗?
Microsoft 减少了 x64 中的调用约定。参见 here .现在基本上一切都是 __fastcall
编译器仍然可以使用 __thiscall 但它会被忽略 ( MSDN link )。所以你的测试程序没问题,但你的库看起来不对。

关于c++ - 为什么 visual studio 2010 寻找 __thiscall 而不是 __cdecl 调用约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11935813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com