Visual Studio 2015:尽管有外部"C",但仍C++装饰
Visual Studio 2015: C++ decorations despite extern "C"
我试图使用一个SDK,我有一个H和OBJ文件。H文件将所有函数声明为外部"C",但在链接时,我得到"无法解析外部符号_ibclr@4"。该函数名为ibclr,并接受一个4b参数,因此它看起来只是c++的装饰。但是外部C怎么不起作用呢?
_ibclr@4
看起来像__stdcall
的mangling,而不是c++的mangling。
确保在声明中指定正确的调用约定。如果库作者没有指定它,请尝试__cdecl
。如果你正在使用Visual c++,它有一个编译器选项用于默认的调用约定,这个选项的默认值是__cdecl
。
相关文章:
- 为什么我的运算符 + 重载尽管是通过引用传递的,但仍调用我的复制构造函数?
- 如何按多个括号类型拆分字符串,但仍将括号保留在C++?
- 尽管直接设置了指针数组,但仍为空
- 以编程方式防止重命名或删除文件,但仍使其可写
- CMake 识别 MSVC(C 和 CXX),但仍抛出"未找到 CMAKE_*_COMPILER"
- 为什么在编译过程中尽管有 -I(破折号大写 i)标志,但仍会出现未定义的引用错误?
- 我如何检查CIN.FAIL(),但仍使用Ctrl D到达文档的结尾
- 尽管使用-i标志,但仍未使用此类文件或目录
- 根节点应具有分配的节点,但仍为 NULL。为什么我无法将节点分配给根?
- SFML 纹理持有人已删除,但仍在范围内
- C++ 继承基构造函数,但仍调用默认派生构造函数
- C2280 STD :: vector的默认构造函数尽管具有移动构造函数,但仍需要元素的复制构造函数
- 指向对象的内存位置的指针已在程序中删除,但仍提供正确答案而不是垃圾值
- 尽管包含头文件,但仍找不到嵌套命名空间
- 功能仅声明,但仍在工作
- 已安装 MPI,但仍出现链接器错误LNK2019
- 使用UTC来回转换日期以忽略DST但仍使用当前用户的有效区域设置是否安全
- 程序静态链接到库,但仍需要 dll 才能运行
- 运行需要输入而不挂起的命令,但仍允许输入
- Visual Studio 2015:尽管有外部"C",但仍C++装饰