C++项目编译为静态库但不是动态库(Visual Studio)

发布于 2024-09-28 23:55:09 字数 515 浏览 1 评论 0原文

我对 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花之痕靓丽 2024-10-05 23:55:09

检查是否定义了以下成员函数

char const* Project::toString(Project::compMode)

当您编译为静态库时,未解析的符号不是错误,因为稍后当您与其他代码链接时可以解析它。

您可能忘记将一些 .cpp 文件添加到您的项目中。

Check if you defined the following member function

char const* Project::toString(Project::compMode)

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文