G++ 无法解析静态库中的非内联函数
g++ failed to resolve non-inlined function in a static library
我正在编写一个依赖于c/c ++第三方库的c ++程序。我将第 3 方库编译为 Windows 和 Linux 上的静态库。我的代码在 Linux 上正常工作,但在 Windows 上出现链接错误,指示我的代码无法解析第 3 方库中的符号。
经过一些调试,我发现未解析的引用是该库中的非内联函数,并且可以解析内联函数(我已经测试过)。最初我认为这是 gcc 和 msvc 之间的不兼容,因为我使用 msvc 编译了 .lib 文件,同时尝试通过 mingw 使用 g++ 编译我的代码。我在Windows上使用g ++重新编译了库,但存在同样的问题。
知道解决方案是什么吗?
=========编辑==
===============澄清一下,第 3 方库不是模板化的。
我发现了问题:我将第 3 方库的 lib*.a(在 Linux 上生成)和 .lib(在 Windows 上生成)放在同一个目录中,因为我希望这段代码是跨平台的。在使用 g++ 在窗口中编译我的代码时,它似乎优先链接到 lib.a 文件,这会导致"未解析的符号"错误。我删除了 lib*.a 文件,g++ 现在链接到 *.lib 文件,并且可以正常工作。
相关文章:
- enable_if转换构造函数(静态强制转换,is_base_of)
- 声明和定义函数静态会产生"undefined reference to function_name()"
- 有没有一种方法可以使全局函数/静态成员函数一次可呼出
- C++ - 模板类 -> 静态函数 -> 静态函数指针的链接错误
- 获取 llvm::函数静态地址
- 成员函数静态变量与成员变量
- 如何将sqlite3+扩展函数静态链接到C/C++应用程序中
- Visual Studio 2015 Natvis如何显示函数静态变量
- 返回一个指向函数静态数据的指针合适吗
- 如何将函数静态应用于非类型模板包的各个元素并对结果求和
- 是否可以通过编程方式创建函数静态对象
- 函数静态变量析构函数和线程
- 函数静态成员变量
- 隐藏模板化的辅助函数——静态成员或未命名的命名空间
- 这个解决方案对MSVC的双重检查锁定错误和函数静态有什么问题?
- 类成员函数静态和私有
- c++函数静态局部,性能好
- 函数静态变量初始化
- 使用基类中的函数静态地调用纯虚函数的派生类实现
- 使成员函数静态会使程序无法编译。想不通为什么