这个是应用VC里面的MFC直接建立DLL库。
首先选定NEW PROJECT
选定MFC DLL,填写能代表动态库功能的名称。
然后选择MFC extension DLL 选定MFC扩展动态库,里面有大部分是供MFC使用的,因此需要去掉一部分内容。
首先在dllmain中去掉上述内容,然后更改 TRACE0("tcp_server.DLL Initializing!\n");为
TRACE0是TRACE0类似于跟踪和跟踪宏是一群变种之一,您可以使用调试输出。
OutPutDebugString(“以NULL结尾的字符串”);发送一个字符串显示的调试器。
最后只能剩下
然后再去删除系统提供主函数中的多余内容,即stdafx.h中的内容
涉及到MFC的应用和宏全部要删除,这些都不在我们现在建立的动态库DLL的应用范围之内。
基本只留下最基本的操作,就是应用WIN32 Control application 新建的工程一样。
剩下的就是要增加代码工程,把主要代码放到一个文件中,然后辅助代码放到一个文件中,最后把主要接口放到一个文件中,必须在当前目录下,然后就可以编译一下,会发现无法发现这些文件,如此就需要在文件属性中选C/C++General中增加Additional Include Directories
如果是在stdafx.h所在的文件目录中,就用。。\xxx\,如果在这个目录外就是。\xxx\,这样基本就能寻找到文件,并且文件中所有的文件都可以查询到。
并且把该需要的lib,就是库都加入进去。最后也是最重要的就是在。Def中确定要输出的函数名称。这个函数是要可以引发动态库的正常运行的。
运行下,如果通过就完成,你就会发现在debug中查找到。Lib和。DLL
然后可以应用depends。Exe(依赖)来查看里面都引用什么库和如何协调工作。这是一个反编译软件。
看一看有没有标红什么情况。正常没有错误就可以下面的操作啦。
下面就是如何应用DLL和LIB,新建一个工程,然后把接口。H文件加入。根据接口新建一个类,并且继承接口类中的回调类,这个类中一般为On开头。在类中可以直接调用DLL的输出函数,开始程序。剩下的操作就可以一步一步执行了。
执行一遍会发现找不到,也就是报错,告诉你找不到lib文件,那么接下来就是把DLL和LIB放入该目录下,然后你要在基础属性中加入目录的基本路径。上面已经有讲了。是。。\xxx\
还是。\xxx\一定要确定清楚,要不然可能还是查找不到路径。