DLL的生成:
1.__declspec(dllexport)用来声明,和标准export差不多。但是这个是dll中声明向外输出的函数或者是类。
2.__declspec(dllexport)是一个修饰词,但是应该到函数的前面,class 和 名字 中间。也就是:
class __declspec(dllexport) name ;
3.extern "C" 也是一个修饰词,代表了函数的命名规则,如果指定了这个,那么只适用于C语言的dll,原名字就是他的名字。这个主要是显示LoadLibrary函数之后获得函数指针需要的函数名会有影响。如果没有指定这个,那么名字会很奇怪。但是如果使用lib和dll一起的话,就可以避免这个问题,还可以定义def文件来避免这个问题。
4.函数调用规则也是一个注意的地方。但是目前没见到这方面的问题。
5.DLLMain入口,每一次调用这个库都会调用这个入口,如果不指定,就默认。可以写看也可以不写。
6.lib和dll+lib:如果是lib,那么编译之后就会把所有的代码都放到一起,就会很大。但是如果是lib和dll一起的话,lib负责函数名字和入口,dll负责实现。那么编译之后的exe也会很小。
7.lib和.h文件最好都需要。就是可以在工程中直接设置PATH。但是dll的寻找就没办法了。如果是双击生成的.exe运行,那么就和PATH环境变量有关。所以你可以自己定义一个环境变量,然后把输出的lib和dll放到那个文件夹里面。如果是直接在VS2013中运行,不知什么原因,不会找path中的文件,所以可以在 属性 -> 调试 -> 工作目录 中指定你自己的dll在的目录,就没问题了。同时include和lib可以使用绝对路径。也不用设置。这样直接就好了。
8.lib和dll好像不可以分开指定生成目录。