![]() |
1
8
通常,您需要强制C++编译器为导出函数使用C链接构建库。
通常,链接器会对函数进行C++名称的修改,从而使C链接器无法找到它们。
更新
|
![]() |
2
4
如果C++库不提供C接口,那么你就不能。
如果您是作者,请使用
|
![]() |
3
3
就个人而言,我将编写一个C++文件,导出使用C链接的函数。换句话说,写一个绑定。 |
![]() |
4
2
在Linux上,您可以使用命令获取C++函数的损坏名称
编辑 :然后必须使用g++或gcc-lstdc链接++ |
![]() |
5
2
从需求的角度来看,这是一个问题。使用 extern C 在C++中,你想从C.调用 Mangling and de-mangling 由于C++过于依赖于平台,所以在C++中从来没有标准化。结果是,尽管您可以通过查看链接器输出来计算C++方法的名称,但是没有可找到的方法来找到C++函数方法的“实际”可链接名称。 |
![]() |
6
1
你甚至可以使用C++类。您主动声明它们为struct。如果执行此操作,某些编译器将发出警告,但您可能可以禁用此警告或忽略它。
请注意,如果类位于命名空间中,则无法执行此操作,因此请创建仅包含该成员的自己的结构并使用该“包装器”。
|
![]() |
7
0
典型的包装如下:
----类包装----
----类包装.cpp----
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |