在头文件中定义函数并封装为Dll的问题

mf1983 2016-11-14 10:38:05
最近在工作中遇到一个封装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文件中定义了函数,那么为什么还出这些问题?

...全文
240 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2016-11-15
  • 打赏
  • 举报
回复
头文件包含的是否正确一般只影响编,程序运行错误可能是由于你代码哪里的问题
mf1983 2016-11-15
  • 打赏
  • 举报
回复
多谢楼上2位指点 @paschen 我再看看他的代码,估计指针用的有问题 @zhao4zhong1 现在用的delphi程序调用,没有源码。等我写个调用程序调试下看
赵4老师 2016-11-15
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧