生成DLL,网上可以找到许多现成的例子,这里主要介绍一下,我在调用DLL的过程中遇到的问题。
对于生成的DLL,同时会有.h和.lib文件生成,将dll文件拷贝到当前运行程序的目录(debug)下
如果是静态调用则需要这两个文件,也比较简单,包含头文件,并把.lib文件加到project的Link中即可。但我在运行时发现,如果只是指定.lib,.h文件的位置,而不将这两个文件拷贝到当前程序(调用dll)的目录下,则会遇到无法找到dll中函数的问题。拷贝后,编译通过,运行通过。这个问题还有待解释。
如果是动态调用,则不需要.h,.lib文件;调试时发现,(1)要给对dll的名字;(2)dll中定义的export的函数前不需要__stdcall定义;有此则会发生无法找到函数的问题;(3)dll中.cpp文件中定义的函数类型要和.h文件中定义的文件类型一致,否则会出现chkesp.c错误。
p.s. visual studio 的工具中有一个depends,可以查看生成dll中exported 函数名。对动态连接时需要查找export函数名很有帮助。