本文继续在“ Golang实践记录:C ++功能”中优化C ++功能。
在上一篇文章中引入的方法,您需要在运行时指定动态库的位置,或放置动态库以放置系统目录。对于作者来说,仍然有一些麻烦。本文将使用一系列功能在运行时加载动态库,以便将其删除。
为了减少长度,仅摘录了必要的源代码。
基于动态库的源代码,添加其他包装动态库头文件C_CALLSO.H:
相应实现文件的主要代码如下:
其中,CSETPORTA函数连接到Foosetpointa函数,只有一个简单的软件包。
Golang测试的完整代码如下:
与上一篇文章的示例不同,C.CSO_Init初始化动态库被主要调用,最终调用了CSO_UNINIT发行版。
运行时,您只需要保持动态库的位置和Golang指定的名称即可。无需设置ld_library_path环境变量。
保留动态库初始化函数,动态库提供的业务界面尽可能小,以减少Golang和C ++之间的代码接口数量。
本文的方法增加了源代码级别的复杂性,这不一定满足要求,因此仅用于参考。Linux的动态库的名称通常是,但是在测试后,也可以使用任何名称。