1

我已经下载了模拟库安装文件,并按照安装说明进行操作。

./configure

检查一系列事情后创建make文件的脚本。

make 

编译 cpp 文件,之后不同的 .o 和 .lo 文件出现在原始文件夹中。

make install 

似乎做了很多,但我似乎注意到的唯一一件事是 /usr/local/include 下出现了一个模拟目录,其中包含所有头文件。

比我尝试编译最简单的主文件可能:(如图书馆网站中提供的:原始示例

#include <mimetic/mimetic.h>

using namespace mimetic;

int main()
{
    MimeEntity me;
    return 0;
}

我正在使用以下命令进行编译(在 CentOS 5.7 上,gcc 版本:4.1.2):

g++ mimetic.cpp

我得到的错误:

/tmp/ccWnsteO.o: In function `main':
mimetic.cpp:(.text+0x80): undefined reference to `mimetic::MimeEntity::MimeEntity()'
mimetic.cpp:(.text+0x91): undefined reference to `mimetic::MimeEntity::~MimeEntity()'
collect2: ld returned 1 exit status

据此,我了解到找到了头文件,但缺少源/库本身。

MimeEntity 构造函数声明出现在:/usr/local/include/mimetic/mimeentity.h 当我搜索mimeentity时,我得到以下信息:

/home/mimetic-0.9.7/mimetic/mimeentity.o
/home/mimetic-0.9.7/mimetic/mimeentity.h
/home/mimetic-0.9.7/mimetic/mimeentitylist.h
/home/mimetic-0.9.7/mimetic/mimeentity.cxx
/home/mimetic-0.9.7/mimetic/.libs/mimeentity.o
/home/mimetic-0.9.7/mimetic/mimeentity.lo
/home/mimetic-0.9.7/mimetic/.deps/mimeentity.Plo
/usr/local/include/mimetic/mimeentity.h
/usr/local/include/mimetic/mimeentitylist.h 

我尝试使用库的搜索路径,但出现相同的错误

g++ mimetic.cpp -L/home/mimetic-0.9.7/mimetic/

当我尝试使用以下行编译主 mimetic.cpp 文件时,发生了其他奇怪的事情

MimeEntity me;

变成

MimeEntity me();

它编译。

4

2 回答 2

2

您用来构建模拟示例的命令似乎不完整。您指定的是库搜索补丁 (-L),而不是库本身。

  1. 确保 -L 选项指定了模拟库的位置
  2. 添加 -l'the-name-of-the-mimetic-library'。我的猜测是-模拟
  3. 为标题的位置添加 -I(即大写 i)选项。
于 2013-07-26T18:32:48.483 回答
2

您收到链接器错误仅仅是因为您在编译测试源文件时没有引用该库。它需要是这样的:

g++ mimetic.cpp -l<libraryname>

添加大括号时它编译的原因是您实际上是在声明一个名为“me”的函数,该函数返回一个 MimeEntry。当它编译时,它不会做你想做的事。

于 2013-07-26T18:23:50.637 回答