使用C中的C++受损函数

Tri*_*g3l 5 c c++ name-mangling

我有一个.lib文件,我没有源代码.

我需要一个导出的函数,但是我用C编写,函数是C++名称错误的.我不能写extern "C",因为我没有源代码.

如何在没有源代码和切换到C++的情况下链接损坏的函数?

Ker*_* SB 12

制作C++包装器:

wrapper.cpp:

#include "3rdparty.hpp"

extern "C" int foo(int a, int b)
{
    return third_party::secret_function(a, b);
}
Run Code Online (Sandbox Code Playgroud)

consumer.c:

extern int foo(int, int);

// ...
Run Code Online (Sandbox Code Playgroud)

构建:(例如与GCC)

g++ -o wrapper.o wrapper.cpp
gcc -o consumer.o consumer.c
g++ -o program consumer.o wrapper.o -l3rdparty
Run Code Online (Sandbox Code Playgroud)


Luc*_*ore 5

在这些函数上编写自己的C++包装器并声明包装器函数extern "C".

我不知道其他任何方式.