我想建立一个小型可重用库。 我有2个项目,项目A用于构建库函数(必须是动态库),项目B用于对其运行测试。
我的问题遇到以下错误: 在项目B中我使用了以下代码:
#include "StdAfx.h"
#include "C:\......\projectA\Ent extension.h" (same folder with "Ent extension.cpp")
void Call_plot()
{
...=fent_select(..);
}
但是,当我构建项目时,我总是收到错误:
Error LNK2019 unresolved external symbol "class Ent __cdecl fent_select(wchar_t const ,enum Mode)" (?fent_select@@YAPEAVEnt@@PEB_WW4Mode@Db@@@Z) referenced in function "void __cdecl" Call_plot (?Call_plot@@YAXXZ)
我该如何解决这个问题?
谢谢你!
您需要将两个源代码文件中的目标代码链接在一起(当您编译源代码时,它通常会变成目标代码)。 如何执行此操作在某种程度上取决于您的操作系统和编译器。但是,例如使用 GNU 的
gcc
编译器,将需要以下编译行。
gcc -g -o Ent_extension.o Ent_extension.cpp
-I
(包含路径)告诉它基础项目 A 的头文件在哪里:gcc -I C:\......\projectA\ -g -o project_B.o project_B.cpp
但是,在将它们链接在一起之前,这两个文件都无法执行,这将执行最后一步:
gcc -o myprogram project_B.o C:\......\projectA\Ent_extension.o
这将从您的两个代码库中创建
myprogram
。
注意:更高级的方法是将项目 A 代码转换为库并将其链接到其中,但这应该是未来的任务。