gcc编译库:可以成功链接,怎么来"未定义的符号"什么时候运行程序?

时间:2015-06-09 14:44:30

标签: c++ gcc

我有一个图书馆的源代码(MP4v2具体但我认为不重要)。

原始源代码编译成libmp4v2.so(使用configure,make,make install),一切正常。

原始源代码在" file.h",

中包含以下代码行
MP4V2_EXPORT
MP4FileHandle MP4CreateEx(const char* fileName);

此函数的实现位于名为" mp4.cpp"的文件中。

MP4V2_EXPORT定义为__attribute__((visibility("default")))

MP4CreateEx工作正常,我可以使用此功能并与" -lmp4v2"链接,并运行最终编译的程序没有任何问题。

然后我在" file.h",

中创建了另一个函数
MP4V2_EXPORT
MP4FileHandle MP4CustomCreateEx(const char* fileName);

实施在" mp4.cpp"太

在configure,make和make install之后,我可以编译我的代码(使用MP4CustomCreateEx函数)并链接到" -lmp4v2"没问题。

但是当我运行它时(通过" ./ a.out"),然后它说,

  

./ a.out:符号查找错误:./ a.out:未定义符号:MP4CustomCreateEx

请注意,使用相同的lib文件,我仍然可以使用MP4CreateEx函数和所有其他导出函数而没有任何问题,只有这个MP4CustomCreateEx有问题。

有关可能导致未定义符号问题的任何提示?感谢。

0 个答案:

没有答案