C++ VisualStudio中的对象文件

C++ VisualStudio中的对象文件,c++,visual-c++,linker,C++,Visual C++,Linker,我有一个主文件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; } 这给出了一个链接错误-可能是因为项目中不包括mycl

我有一个主文件
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
,因为编译这个类非常麻烦。 看见 如果你想知道我在用哪个图书馆

就我的问题: 我是否可以编译并使用仅包含头文件和对象文件的类,即根本不包含.cpp文件


谢谢

Visual Studio生成一个.obj文件作为其中间格式。gcc和gcc是生成.o文件的。您可以将其包含在项目中,或者,由于库很少有一个编译单元,您可以构建一个.lib文件并包含它。不过,请注意,编译后的单元必须使用与您在项目中使用的编译器开关(如运行时库等)完全相同的编译器开关进行编译。从源代码处编译文件通常更简单


我们也可以讨论使用DLL,但这似乎超出了您的问题范围,而且还引入了调用约定的复杂性

它是同一个编译器。百分之一百零一。如果包含.o文件,是否需要.cpp文件?如果(.cpp)在同一个字典中(如果它们不需要),是否有问题。如何构建.lib?只需将CPP文件添加到项目中。它们是否使用相同的编译器构建并不重要。重要的是调用约定以及它们编译所依据的标准库之间可能存在的冲突。例如,可以将.obj链接到动态运行时,并将应用程序设置为静态运行时。如果您链接了该项目,您会遇到非常奇怪的链接器错误。在visual studio中构建库的最简单方法是在启动新项目时选择该选项。同样,您必须小心匹配库项目和将包含它的项目中的编译器设置。将
myclass.cpp
添加到项目中