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

时间:2010-10-26 16:13:02

标签: c++ dynamic static linker

我对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

有关此处可能发生的事情的任何帮助或背景?

1 个答案:

答案 0 :(得分:4)

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

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

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

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