与代码块一起使用时,使用 Visual Studio 创建的静态库显示对 Myfunction 的未定义引用
Posted
技术标签:
【中文标题】与代码块一起使用时,使用 Visual Studio 创建的静态库显示对 Myfunction 的未定义引用【英文标题】:Static Library Created With Visual Studio Shows Undefined Reference To Myfunction when used with codeblocks 【发布时间】:2015-04-10 15:09:28 【问题描述】:您好,我使用 Microsoft Visual Studio 2008 创建了一个静态库,还创建了一个标头,其中包含在该库中编写的函数的所有函数原型,但是当我链接并尝试使用代码块编译它时,它显示未定义的引用'MyFunction' 但我已经包含了包含其原型的标题并链接了库。为什么它不起作用?
代码(库):
int add(int x,int y)
return x+y;
代码(标题):
int add(int,int);
所有这些都可以在 Visual Studio 下工作,但不能在代码块下工作。 在此先感谢...对不起,我是编程新手..
【问题讨论】:
您为什么希望能够链接由不同编译器创建的静态库? 但我使用了第三方库(BASS 音频库),它同时适用于 Visual Studio 和 Code Blocks。 那将是一个导入库而不是静态库 请原谅我......我是新手。什么是导入库?我是否必须为每个不同的编译器制作一个静态库? 导入库用于链接到 dll。实际代码是外部的。静态库是自包含的,它有实现。 【参考方案1】:由 Visual Studio 生成的静态库通常不能被 MinGW 使用,反之亦然。这有多种原因,但最常见的是静态库与生成库的编译器的 C++ 运行时相关联。而且您正在尝试与使用不同运行时的编译器链接。
您报告的问题听起来更像是名称管理不匹配的问题,但即使您解决了名称管理问题,您也可能会遇到其他问题。
显而易见的解决方案是构建静态库的多个版本,为您使用的每个编译器构建一个版本。
【讨论】:
谢谢!以上是关于与代码块一起使用时,使用 Visual Studio 创建的静态库显示对 Myfunction 的未定义引用的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中,与 std::async 一起使用时未调用“thread_local”变量的析构函数,这是一个错误吗?
将 QCharts 与 Visual Studio 2015 一起使用时未解析的外部符号
关于在 Visual Studio 中使用 #pragma region 折叠代码块
在 Visual Studio 上的 C++ 项目中将 NetCDF(通过 vcpkg 安装)与 CMake 一起使用时未解析的外部符号