背景: 在VB下可以把一个工程编译成DLL导出在别的VB工程中使用,那么VC怎么能轻松地把自己所需要的部分导出呢?需求: 1, 现有一已完工的VC6工程。 2, 客户利用关系强求源代码。 3, 有什么办法把其中绝大部分类封装成DLL? 4, 最好改动不要很大。解决方法: 1, 在原工作区建一个扩展DLL工程。把生成文件路径指定为原工程文件路径,这样编译后不用拷贝DLL文件 2, 在DLL工程的DLL.h中定义:#ifdef GUILIB_IMPL #define GUILIB_EXT_CLASS _declspec( dllexport ) #define GUILIB_EXT_API _declspec( dllexport )#else #define GUILIB_EXT_CLASS _declspec( dllimport ) #define GUILIB_EXT_API _declspec( dllimport )#endif 3, 在原工程中的StdAfx.h中定义如下宏:#define USE_DLL #ifdef USE_DLL #include "Dll//Dll.h"#else #define GUILIB_EXT_CLASS #define GUILIB_EXT_API #endif 4, 在你的原工程的所有文件中需要导出的类或函数前加一个宏,形如:class GUILIB_EXT_CLASS CDllLoader//类void GUILIB_EXT_API InitGuiLibDLL();//函数 5, 在DLL工程中加入你希望导出的文件,注意,不是复制一份,而就用原来工程的.这样你可以修改你的EXE,而新的DLL仅重新编译一遍就好了,不用维护两份代码.具体参考例子程序。总结: 上述方法简单,可以实现工程开发时用源代码,在需要导出的时候仅需要编译一下DLL工程即可。而在使用时,如果您的工程中加入了导出类的实现文件,就是用的实现文件,如果把实现文件从工程中导出就是用的DLL中导出的类。用起来感觉比较方便。