【问题标题】:How to combine libraries with __stdcall and __cdecl in one vs2008 project如何在一个 vs2008 项目中将库与 __stdcall 和 __cdecl 结合起来
【发布时间】:2012-07-20 09:33:35
【问题描述】:

我想在我的项目中使用两个 3rd 方库,但一个是使用 __stdcall 约定编译的,另一个是使用 __cdecl 编译的。无论我将项目属性设置为什么,LINKER 都无法链接一个或另一个库。有没有办法做到这一点?

【问题讨论】:

  • 老兄,8 个问题,0% 接受?
  • 编辑第一个的.h文件,在函数声明中插入__stdcall。
  • @HansPassant 谢谢,成功了。
  • @HansPassant 这行得通。太感谢了!你为什么不让你的答案成为一个正确的答案,以便我们投票呢?

标签: c++ visual-studio-2008 linker calling-convention .lib


【解决方案1】:

调用约定external代码编译应该是无关紧要的。只要使用正确的约定声明了适当的函数,您为自己的代码使用的约定就无关紧要了,无论您做出什么选择,它都会起作用。

【讨论】:

  • 我同意,但我看到如果我只是尝试编译它而不更改其中一个标头中的声明,则链接器会失败(在我的其他问题中有更详细的描述)。如果在标题中没有明确指定约定,那么导入的函数使用什么约定?我的假设(如果我错了,请纠正我)是项目属性或特定文件中指定的那个。在这种情况下(我对整个项目使用一种约定,而第 3 方库是用另一种约定编译的),我认为链接器失败是有道理的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
相关资源
最近更新 更多