如何用DLL最简单地保护您的工程代码

转贴自

背景:
    在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中导出的类。用起来感觉比较方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值