无法将一个项目的头和 CPP 文件与另一个项目链接 LNK2019:未解决的外部符号错误
unable to link header and cpp file of one project's from another LNK2019: unresolved external symbol error
我有一个头文件A.h
namespace DIV
{
int Fun();
}
源文件a.p p
namespace DIV
{
class A
{
public:
A(){}
~A(){}
int Fun();
};
int A::Fun()
{
return 0;
}
}
现在我在相同解决方案的另一个项目中有另一个源文件B.cpp。
这个源代码使用了google的GTest框架。在test函数中,我使用
#include "gtest/gtest.h"
#include "A.h"
TEST(FunTest, Param)
{
int value = DIV::Fun();
}
由于DIV::Fun()
调用,我得到链接器错误。我不明白链接器错误背后的原因。
EDIT: b.p p在.exe项目中,A.h/cpp在lib项目中。
问题解决。我从这里得到了答案。总而言之,我需要将我的exe项目与包含fun()
函数的lib项目链接起来。现在,使.exe项目链接到.lib项目的最简单方法可能是添加一个引用:
- 在.exe项目的设置中,选择section列表顶部名为"Common Properties"的section。
- 您现在应该看到.exe项目所拥有的引用列表。列表可能为空。
- 点击对话框底部的"Add new reference"按钮,添加.lib项目作为参考
- 当您在引用列表中选择新引用时,您将看到该引用的一组属性。确保名为"Link Library Dependencies"的属性设置为true。这将导致在构建.exe项目时,.lib项目作为输入自动添加到链接器中。
之后链接器错误消失。
使用extern和不使用extern关键字都可以工作。您需要将函数fun导出到其他模块/项目。使用使用__declspec (dllexport) 。
您在这里使用extern
的目的是什么?由于函数默认具有外部链接,因此没有必要为此将函数标记为extern
。但是,在这种情况下,这应该不会导致链接器错误。
链接器错误表明找到了函数定义,但没有正确链接到目标文件。你是如何编译和连接程序的?
编辑:由于A.cpp与B.cpp不在同一个项目中,您需要显式地链接到A.cpp项目中的目标文件。因为它听起来像你在使用Visual Studio,你可能会发现这很有用
如何在Visual Studio的项目/解决方案之间共享代码?
相关文章:
- CMake 项目链接静态库
- 尝试使用 gradle 构建指向静态库的 c++ 项目链接时找不到头文件
- 将错误GoogleMock与我在linux下的C++项目链接
- 将OpenBLAS与Qt Creator项目链接
- 从大型 github 项目链接共享库
- 将TBB库与QTCreator与CMAKE项目链接
- 如何与Libm.so和libdl.so与我的Bazel项目链接
- 将C++项目与 Visual Studio 中的窗体项目链接
- GTEST测试项目链接链接到其他可执行文件
- Visual Studio,将项目链接在一起并进行测试
- 如何在Xcode4上从头开始构建C++项目-链接现有和新的外部库
- 我怎么能说视觉工作室将库与我的项目链接起来
- 添加类后项目链接错误
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- Netbeans/C++:将2个项目链接在一起(可执行文件/动态库)
- 裸机目标与cmake项目链接错误
- 使用lua lib的Xcode c++项目链接错误
- 试图从另一个项目链接类时出现链接器错误
- 如何将code::块设置为在目标链接器选项之前链接项目链接器选项
- 无法将一个项目的头和 CPP 文件与另一个项目链接 LNK2019:未解决的外部符号错误