我有一个.lib文件,我没有它的源代码。
我需要一个从中导出的函数,但我是用C语言编写的,这个函数是C++名称损坏的。我不会写extern "C",因为我没有源代码。
如何链接没有源码的损坏函数并切换到C++?
发布于 2012-09-11 21:58:12
创建C++包装器:
wrapper.cpp:
#include "3rdparty.hpp"
extern "C" int foo(int a, int b)
{
return third_party::secret_function(a, b);
}消费者.c:
extern int foo(int, int);
// ...Build: (例如与GCC)
g++ -o wrapper.o wrapper.cpp
gcc -o consumer.o consumer.c
g++ -o program consumer.o wrapper.o -l3rdparty发布于 2012-09-11 21:57:43
在这些函数上编写您自己的C++包装器,并用extern "C"声明您的包装器函数。
我不知道还有什么其他的方法。
发布于 2014-12-03 05:27:31
可以从c程序中调用.lib文件中损坏的名称。如果您链接到的.lib是稳定的,并且没有不断地重新编译/更新,那么这个解决方案可能对您有效。
我对.lib不是很熟悉,但How to See the Contents of Windows library (*.lib)或其他搜索应该会显示如何从windows获取此信息
在输出中搜索函数的名称,大多数mangling都会保持名称不变,只是用各种其他信息来修饰它。
将该名称放入您的C代码中,并添加解释性注释...
https://stackoverflow.com/questions/12371370
复制相似问题