我可以使用dlopen使用C ++编译的共享库吗?

时间:2015-03-18 09:33:54

标签: c++ c shared-libraries

首先,我尝试在C中创建简单的共享库,并使用dlopen调用库并且工作正常。然后我要求我可以有一个cpp文件来调用c编译的共享库。

在简单的程序中调用很好。这是否意味着我们可以在更大的程序中从c ++调用c创建的库???

在C ++中使用dlopen的文档中,提到使用extern,因为我认为共享库是用C ++编写的,因此它将被转换为C Like。如果它已经在c中了。我们不需要使用extern并直接使用c ++。

我说错了吗?

1 个答案:

答案 0 :(得分:0)

在所有主要操作系统上,函数的调用约定对于C和C ++编译是相同的。 C ++增加的主要区别是,类成员函数有一个额外的隐式参数(this指针),并且为了反映类型签名而使其名称受损,以便可以重载单个函数名称。除了调用函数之外,对C和C ++也是一样的。

当您使用dlopen及更晚dlsym时,唯一关注的是符号的命名。但是,由于您打算访问C库,因此C ++名称修改不是问题;您最初只能使用符号标识符。