链接c++代码的问题
Problems with linking C++ code
我正在学习如何创建和使用静态库,并且我遇到了一些问题。这就是我所做的。
首先,我写了一些代码,并将其放入String.h
和String.cpp
文件中。
然后我把它编译成一个目标文件:
mingw32-g++ -c -O2 -s -DNDEBUG String.cpp -o .objString.o
那么我已经存档了(?):
ar cr .libString.lib .objString.o
和索引(?)它:
ranlib .libString.lib
之后,我已经成功地编译并链接了测试与mingw:
mingw32-g++ -std=c++03 -Wall -O2 -s -DNDEBUG .testsrctest.cpp .libString.lib -o .testbintest.exe
测试编译,链接和运行完美。
之后,我想把这个库包含到我的MSVS12项目中。我:
-
为
Project - C/C++ -General - Additional Include Directories
添加String.h
的路径 -
包含
String.h
到一些项目头 -
为
Project - Linker - General - Additional library directories
添加String.lib
的路径 -
添加
String.lib
到Project - Linker - Input - Additional dependencies
LNK2011
和LNK2019
错误。在我看来,它找不到我的功能的实现……
请告诉我,我做错了什么,我该如何补救。谢谢!
c++没有太多关于二进制格式的标准——甚至没有名字如何记录在库中。(c++编译器喜欢"混淆"名称,将参数和返回类型代码之类的东西插入其中。但他们在如何做到这一点上没有达成一致。)结果是,除非将其中的函数声明为extern "C"
,否则来自一个编译器的库很少可移植到另一个编译器。
你必须声明你的库函数,或者用Visual Studio编译库,如果你想在那里使用它。(如果您愿意,也可以将库的代码放在头文件中,但这听起来像是您试图拥有一个已经编译的静态库。)
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在java中解决这段代码时面临循环中的问题
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 读取最后一行代码算法 - c++ 时出现问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- Xcode 语义问题引用或以前定义的代码
- 需要以下代码的帮助,下面的代码有什么问题
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 如何在代码问题中解决此问题 代码强制
- C 代码问题?编译器问题?代码块
- C - 如果语句问题.代码将不会运行其他,否则
- 简单的NOOB C 输入/输出问题:代码错误
- NDK:0xdeadd00d时虚拟机中止和致命信号 11 (SIGSEGV) 的问题(代码 = 1)
- 编译问题 - 代码 C2129
- c++问题代码段
- 模板作用域问题代码无法编译
- 基本 CUDA 程序的问题.代码或编译器