感觉自己哪里都对:库编译通过,位置也对,dlopen()正确打开库,函数名(比如函数名是mainForMac)也正确,结果到了dlsym出错了,怎么回事?
原因
显然,库是c++编译的,实际上函数名在内部已经发行了变化。这个时候mainForMac可能变成了mainForMacZ3之类。当然了,试图使用新的函数名也是错误想法。
解决办法
应该这样声明mainForMac:
#ifdef __cplusplus extern "C"{ #endif int mainForMac(const int argc, const char**argv); #ifdef __cplusplus } #endif
再重新编译库即可。