我有一个图书馆的源代码(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有问题。
有关可能导致未定义符号问题的任何提示?感谢。