今天把昨天的代码试了一下,还是连接错误,试了一个上午。
造成这个错误是由两方面
1.我以为PASCAL关键字同__stdcall是一样的,后来再留意到上面的注释说是用于OS/2操作系统。
2.另外在DEF文件中的PRIVATE关键字经过试验,发现是表示符号是否导出到LIB文件中。
所以我一直可以通过GetProceAddress得到函数地址,而不能通过lib导入引用符号。
DEF文件中的含意我只知道它是把函数做为原型,并且导出符号,方便其它工具调用。
总结:
extern "C" 会把以C形式导出函数名 函数名为_FUNCTION@0 之类的名字。
__declspec(dllexport) VC导出关键字 ,函数名为 ?FUNCTION@@3XYZ 之类的名字。
__declspec(dllimport) VC导入关键字,可以不加,但加了听说装载的时候会快些。
DEF文件中的函数表示 以原型导出函数 其中的PRIVATE关键字表示LIB文件中是否加入。
认为当使用了DEF文件后 extern "C" 等导出关键字就无效了。