繁体   English   中英

使用C语言的C ++共享库

[英]Using C++ shared library from C

我有一个从C应用程序使用的C库,其中包含dlopendlsym 一切正常,但我将C库重写为C ++,现在我的主应用程序停止使用该库。

它找不到符号(函数),即使代码完全相同,只是我改变了我的编译方法。

这就是我之前获得lib的方式:

$(PLUGINS_DIR)/%.so: $(PLUGINS_DIR)/%.o
    $(CC) $^ -o $@ -shared

$(PLUGINS_DIR)/%.o: $(PLUGINS_DIR)/%.c
    $(CC) -c $< -o $@ -pedantic -g -Wall -std=gnu99 -fpic -I.

这就是我现在得到的:

$(PLUGINS_DIR)/%.so: $(PLUGINS_DIR)/%.o
    $(CPP) $^ -o $@ -shared

$(PLUGINS_DIR)/%.o: $(PLUGINS_DIR)/%.cpp
    $(CPP) -c $< -o $@ -pedantic -g -Wall -fPIC -I.

我应该如何编译mmy C ++库,以便可以从我的C代码中使用它?

这是因为名称修改,函数名称在c ++中被修改以提供函数重载,如果你需要在c中使用这些函数,则使用extern "C"声明函数,这样编译器就不会破坏函数的名称。

因此,将此原型添加到函数void function() {}

extern "C" void function();

会做的。 我认为您可以弄清楚如何修复其他功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM