【发布时间】:2017-11-07 18:40:29
【问题描述】:
我是 C/C++ 编程的新手,我需要创建一个 dll 文件,以便算法模型可以与调用它的另一个程序进行交互。我用 C 和 C++ 编写了一个带有函数原型和虚拟返回值的空函数,并分别在 gcc 和 g++ 中编译它们。从 C 文件生成的 dll 文件很容易与父程序集成并返回所需的输出。但是,对于 C++,程序说找不到 initialise 函数。两个文件中的代码结构如下:
void initialise (int a) {
return 1;
}
void body (int b) {
return 1;
}
void close () {
return 1;
}
编译方法(分别使用mingw gcc和g++)
gcc -c test.c
gcc -shared -o test1.dll test.o
g++ -c test.c
g++ -shared -o test2.dll test.o
我需要 cpp 来继续我的项目,所以不能使用 c.如何使用 C 编译 dll 以消除此错误的发生?另请提及导致此问题的 C 和 C++ 之间的编译差异是什么?
【问题讨论】:
-
C != C++。 C++ 有name mangling。如果 DLL 的调用者需要 C,则需要专门编写 C++ 代码才能正常工作。