我正在尝试学习如何在 C++ 程序中构建和使用动态库。一切都很好,当我从终端启动它时我的程序运行良好(我在 mac OS X El Capitan 上)。令人惊讶的是,当我尝试通过单击可执行文件来启动它时,情况并非如此。我得到一个错误dyld: Library not loaded: liblibrary.so
。Reason: image not found
我所有的文件都在同一个目录中。我用命令构建它们:
g++ -c -fPIC A.cpp
g++ -c -fPIC B.cpp
g++ -shared -fPIC A.o B.o -o library.so
g++ main.cpp library.so -o Program
在此先感谢您的帮助。
我尝试了以下解决方案:
- 添加一个路径,在
LD_LIBRARY_PATH
和DYLD_LIBRARY_PATH
- 更改库扩展名:
library.so
或library.dylib
- 添加一个 rpath
g++ main.cpp library.so -Wl,-rpath,. -o Program
和g++ main.cpp library.so -Wl,-rpath,$HOME/my_dir -o Program