首先,我尝试在C中创建简单的共享库,并使用dlopen调用库并且工作正常。然后我要求我可以有一个cpp文件来调用c编译的共享库。
在简单的程序中调用很好。这是否意味着我们可以在更大的程序中从c ++调用c创建的库???
在C ++中使用dlopen的文档中,提到使用extern,因为我认为共享库是用C ++编写的,因此它将被转换为C Like。如果它已经在c中了。我们不需要使用extern并直接使用c ++。
我说错了吗?
答案 0 :(得分:0)
在所有主要操作系统上,函数的调用约定对于C和C ++编译是相同的。 C ++增加的主要区别是,类成员函数有一个额外的隐式参数(this
指针),并且为了反映类型签名而使其名称受损,以便可以重载单个函数名称。除了调用函数之外,对C和C ++也是一样的。
当您使用dlopen
及更晚dlsym
时,唯一关注的是符号的命名。但是,由于您打算访问C库,因此C ++名称修改不是问题;您最初只能使用符号标识符。