C++项目编译为静态库但不是动态库(Visual Studio)
我对 Visual Studio 中的 C++ 有点陌生,我正在尝试使用 Visual Studio 编译一个大型 C++ 项目。我已经检查了所有源文件和头文件并将其添加到我的项目中,还更新了项目属性中的所有包含路径。
如果我将项目类型设置为“静态库(.Lib)”,则该项目将毫无错误地进行编译,并且我将拥有一个漂亮的脂肪 .lib 文件。
如果我将项目更改为“动态库 (.dll)”,该项目将不再编译并因链接错误而失败。
这是一个例子:
Error 27 error LNK2001: unresolved external symbol "char const * __cdecl Project::toString(enum Project::compMode)" (?toString@Project@@$$FYAPBDW4compMode@1@@Z) H:\repo.project\user\tool\component.obj tool
关于这里可能发生的事情有任何帮助或背景吗?
I'm a little new to c++ in visual studio, and I'm trying to compile a massive C++ project with Visual Studio. I've gone through and added all source and header files to my project and also updated all of the include paths in the project properties.
If I have the type of project set to "Static Library (.Lib)" the project will compile without error and I'll have a nice fatty .lib file.
If I change the project over to a "Dynamic Library (.dll)" The project no longer compiles and fails on linking errors.
Here's an example of one:
Error 27 error LNK2001: unresolved external symbol "char const * __cdecl Project::toString(enum Project::compMode)" (?toString@Project@@$FYAPBDW4compMode@1@@Z) H:\repo.project\user\tool\component.obj tool
Any help or background on what might be happening here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
检查是否定义了以下成员函数
当您编译为静态库时,未解析的符号不是错误,因为稍后当您与其他代码链接时可以解析它。
您可能忘记将一些 .cpp 文件添加到您的项目中。
Check if you defined the following member function
When you compile as a static library an unresolved symbol is not an error, because it can be resolved later when you link with other code.
You may have forgotten to add some .cpp file to your project.