g++链接与VisualC++链接
g++ Linking vs VisualC++ Linking
我已经尝试了一段时间,但在其他地方找不到答案,这是我的问题。
当我在Visual C++中创建一个静态库时,该库使用的任何依赖项都会被携带到我链接该库的可执行程序中
Test.lib取决于-SDL-OpenGL
TestApp.exe链接Test.lib
在Visual C++中,我不必在我的TestApp可执行文件中添加Test.lib的依赖项,它们会被继承,而且效果很好。
然而,当我将代码移植到Linux g++(使用code::Blocks IDE)时,如果我在g++中创建了一个静态库,即.a,并且我创建了链接该库的TestApp,它会获得对依赖项的未定义引用。
g++能做到这一点吗?如果能,我缺少什么来将依赖项转移到我的可执行文件中?
至于我的库设置,我只是使用IDE的静态库设置。
使用Microsoft的编译器,头文件中可以包含库依赖信息(源文件也是,但这通常在头文件中完成);它被编译到对象文件中,链接器理解并应用这些信息。这很方便:你不必记住又长又时髦的名字,如果你用不兼容的选项编译两个源文件,你可能会遇到链接器会抱怨的库名冲突。大多数编译器和链接器都不做这种事情,并且必须明确地告诉链接器要链接到哪些库。
静态库不会与其他库静态链接。听起来对吗?但是,您可以使用名为ar.的工具将许多对象文件打包在一起
在windows上发生的情况可能是因为在系统环境路径中的某个位置有(SDL,opengl32)dll。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 从链接列表c++中删除一个项目
- 有根的二进制搜索树.保留与其父级的链接
- 读取文件的最后一行并输入到链接列表时出错
- 静态数据成员的问题-修复链接错误会导致编译器错误
- node-gyp 在 macOS 上未正确链接库
- 基于boost的程序的静态链接——zlib问题
- 无法链接 CMake 中的本地库
- 内联函数中具有内部链接的全局变量
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 使用gcc从静态链接的文件中查找可选符号
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 下面是我为检测链接列表中的循环而制作的代码
- 有了gcc,是否可以链接库,但前提是它存在
- 使用C链接在函数内部创建C++模板
- Visual Studio mkl_link_tool.exe链接错误
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- g++链接与VisualC++链接