2019独角兽企业重金招聘Python工程师标准>>>
为了让VC6写的动态库程序(为什么要用VC6写动态库?很简单,动态库很简单,发布部署简单)能够很好的支持C/C++调用,尤其是使用了__stdcall的调用约定,C++编译器会自动给函数另外命名,因此编辑DEF文件可以强制约定函数输出名称,避免调用方找不到函数名称的情况。
//创建一个DEF文件
LIBRARY cqueuelib #动态库输出名称
EXPORTS
FuncName1 @1
FuncName2 @2
FuncName3 @3
#FuncName1是函数名称,@1是函数内部地址,通常是声明的顺序。
//加入VC6项目中
导出和导入代码:
#if defined(CAMERA_LIBRARY)
# define CAMERASHARED_EXPORT __declspec(dllexport)
#else
# define CAMERASHARED_EXPORT __declspec(dllimport)
#endif