VC++ 一个解决方案中的多个项目 - 链接器问题 (LNK2019)
VC++ Multiple projects in one solution - Linker issues (LNK2019)
为了尝试拥有易于维护的模块化代码,我将以前的 VC++ 解决方案中的代码拆分到单独的其他项目中。那是我可以维护单独的代码库,同时仍然能够将工作代码包含在解决方案中。我的解决方案资源管理器如下所示:
我已经关注 this(项目 config/VC++/额外包含路径)所以在这里回答,以允许 fodHelperBypass.cpp
访问 registry.cpp
中的方法。然后 VS 允许我导入 RegistryTools 项目的头文件:
事实上,如果我 Ctrl + click
registry.h
导入声明 VS 将打开头文件,我可以确认它是从正确的位置加载的。 registry.cpp
文件位于同一目录中。
我还可以确认,在项目构建设置中,两个项目都设置为 x64 构建配置(在早些时候情况并非如此,VS 无法将 registry.h
定位为 RegistryTools 构建配置被设置为 x86)。 VS也能识别fodHelper.cpp
文件中的外部函数,不会报任何未定义的错误。
然而,在尝试构建项目时,我收到 registry.h
和随后的 registry.cpp
.
中声明的每个方法的 LNK2019
错误
我已阅读 this SO post,但我认为这不适用,因为我没有声明任何 类。此外,当我简单地将 registry.h
和 registry.cpp
复制并粘贴到解决方案目录中,并将它们添加到解决方案中时,代码构建没有错误。
有人可以解释一下我做错了什么导致 linker 出现这个错误吗?
编辑
我将本方案涉及的两个子项目编译为.lib
个文件,达到了预期的效果。虽然我仍然很困惑,但我必须这样做才能使用另一个 C++ 项目中的方法吗?引用的函数必须是静态库的一部分吗?
从阅读第一个 link 开始,我的印象是我所要做的就是在项目配置中添加 include 目录,然后我就可以使用 RegistryTools 中的方法了。
RegistryTools 是一个包含一个具有四个函数的 cpp 文件和一个声明它们的头文件的项目。
为了尝试拥有易于维护的模块化代码,我将以前的 VC++ 解决方案中的代码拆分到单独的其他项目中。那是我可以维护单独的代码库,同时仍然能够将工作代码包含在解决方案中。我的解决方案资源管理器如下所示:
我已经关注 this(项目 config/VC++/额外包含路径)所以在这里回答,以允许 fodHelperBypass.cpp
访问 registry.cpp
中的方法。然后 VS 允许我导入 RegistryTools 项目的头文件:
事实上,如果我 Ctrl + click
registry.h
导入声明 VS 将打开头文件,我可以确认它是从正确的位置加载的。 registry.cpp
文件位于同一目录中。
我还可以确认,在项目构建设置中,两个项目都设置为 x64 构建配置(在早些时候情况并非如此,VS 无法将 registry.h
定位为 RegistryTools 构建配置被设置为 x86)。 VS也能识别fodHelper.cpp
文件中的外部函数,不会报任何未定义的错误。
然而,在尝试构建项目时,我收到 registry.h
和随后的 registry.cpp
.
LNK2019
错误
我已阅读 this SO post,但我认为这不适用,因为我没有声明任何 类。此外,当我简单地将 registry.h
和 registry.cpp
复制并粘贴到解决方案目录中,并将它们添加到解决方案中时,代码构建没有错误。
有人可以解释一下我做错了什么导致 linker 出现这个错误吗?
编辑
我将本方案涉及的两个子项目编译为.lib
个文件,达到了预期的效果。虽然我仍然很困惑,但我必须这样做才能使用另一个 C++ 项目中的方法吗?引用的函数必须是静态库的一部分吗?
从阅读第一个 link 开始,我的印象是我所要做的就是在项目配置中添加 include 目录,然后我就可以使用 RegistryTools 中的方法了。
RegistryTools 是一个包含一个具有四个函数的 cpp 文件和一个声明它们的头文件的项目。