如何构建库函数? [重复]

问题描述 投票:0回答:1

我想建立一个小型可重用库。 我有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)

我该如何解决这个问题?

谢谢你!

c++ linker-errors
1个回答
0
投票

您需要将两个源代码文件中的目标代码链接在一起(当您编译源代码时,它通常会变成目标代码)。 如何执行此操作在某种程度上取决于您的操作系统和编译器。但是,例如使用 GNU 的

gcc
编译器,将需要以下编译行。

  1. 第1步,编译你想要的基础代码包括:
gcc -g -o Ent_extension.o Ent_extension.cpp
  1. 第 2 步,编译想要使用扩展的代码,使用
    -I
    (包含路径)告诉它基础项目 A 的头文件在哪里:
gcc -I C:\......\projectA\ -g -o project_B.o project_B.cpp

但是,在将它们链接在一起之前,这两个文件都无法执行,这将执行最后一步:

  1. 将它们链接在一起形成可执行文件:
gcc -o myprogram project_B.o C:\......\projectA\Ent_extension.o

这将从您的两个代码库中创建

myprogram

注意:更高级的方法是将项目 A 代码转换为库并将其链接到其中,但这应该是未来的任务。

© www.soinside.com 2019 - 2024. All rights reserved.