我有一个主文件main.cpp
,其中包含myclass.h
。我还有 myclass.o
和 myclass.cpp
。 Visual Studio 项目仅使用文件 main.cpp
和 myclass.h.
这次编译:
#include "myclass.h"
int main()
{
return 0;
}
这不是:
#include "myclass.h"
int main()
{
myclass M{};
return 0;
}
这给出了链接错误 - 可能是因为 myclass.cpp
或 myclass.o
未包含在项目中。
我宁愿只包含 myclass.o
因为编译这个类是非常有问题的。
看
https://forum.qt.io/topic/8492/solved-cannot-get-quazip-test-to-work/3
如果您对我使用的是哪个库感到好奇。
我的问题: 我可以编译和使用仅包含头文件和目标文件的类,即根本没有 .cpp 文件吗?
谢谢!
最佳答案
Visual Studio 生成一个 .obj 文件作为它的中间格式。 gcc 和 gcc 是生成 .o 文件的。您可以将其包含在您的项目中,或者由于库很少有单个编译单元,您可以构建一个 .lib 文件并包含它。但是请注意,编译单元必须使用与您在项目中使用的完全相同的编译器开关(例如运行时库等)进行编译。简单地从源代码编译文件通常更简单。
我们也可以讨论使用 DLL,但这似乎超出了您的问题范围,并且还引入了调用约定的复杂性。
关于c++ - Visual Studio 的对象文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31061477/