开发平台(Platform): (Ex: Win10, Linux, ...)
Debian GNU/Linux Jessie
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
g++ 4.9.2
go 1.7.3
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
None
问题(Question):
我在练习将 Golang 转出的 shared library 和 C++ 程式结合
程式已经写好了,也转成 shared library (.so)
编译时也没跳错误讯息,编译指令如下:
$ g++ -o main main.cpp -L. -ldoubler
但是执行时,程式却说找不到 shared library,讯息如下:
libdoubler.so: cannot open shared object file: No such file or directory
蛮诡异的,那个 .so 档就在同一个资料夹中 Orz
我另外把这个程式包成 Ruby gem,给 Ruby 程式呼叫,可正确执行
我也在 Mac 上用同样的 main.cpp,也可正确执行
这个蛮难 google 的,因为会找到一大堆没装 xxx library 之类的讨论串 = =...
喂入的资料(Input):
None
预期的正确结果(Expected Output):
错误结果(Wrong Output):
./main: error while loading shared libraries:
libdoubler.so: cannot open shared object file: No such file or directory
程式码(Code):(请善用置底文网页, 记得排版)
# main.cpp
#include <iostream>
#include "libdoubler.h"
using std::cout;
using std::endl;
int main() {
cout << DoubleFloat(1.2) << endl;
}
如果大家有兴趣,可以到以下网址看我的程式码:
https://github.com/cwchentw/doubler
补充说明(Supplement):
PTT 惠我良多