在头文件中定义函数并封装为Dll的问题
最近在工作中遇到一个封装Dll的问题,虽然解决了,但是还不明白错误的原因,请教大家。事情是这样:
同事需要封装一个Dll库,导出2个函数(假设为a(参数……)和b(参数……)),他的封装Dll工程包括:
若干个.h文件,一个.c文件,一个.def文件
其中一个.h文件(假设为c.h)中定义了函数,内容如下
a(){具体实现};
b(){具体实现};
函数实现没有问题,然后在.c文件include这些头文件,内容如下:
#include (若干).h
#include c.h
main(){
若干代码……
a(实参……);
b(实参……);
}
然后.def文件导出内容如下:
LIBRARY “dll名字”
EXPORTS
a
b
编译属性设置为生成dll,_cdecl,生成DLL供Delphi程序使用,出现的问题包括有时工作正常有时失败、调用程序崩溃等
后来我按传统的dll封装方法重新写了一个DLL封装工程解决了问题
我的疑惑是,同事的方案中既然.c文件include了相应的.h文件,也相当与在.c文件中定义了函数,那么为什么还出这些问题?