LIB与DLL的区别

1.dll是一个可执行文件,而lib则是对dll中引出函数提供索引地址功能的文件。在隐式链接dll(静态)的时候,linker可以根据lib文件提供的索引地址进行链接。动态是指在运行中在需要的时候加载dll文件,能过查询dll的导出函数地址来调用的dll中的函数,典型的调用为LoadLibrary,QueryProcAddress,FreeLibrary.


所以,lib文件主要是提供给linker进行静态连接使用的。而dll则存放程序真正的可执行的代码。无论动态还是静态。dll都是必须的,而动态调用下,lib不是必须的!

 

2.上面提到的把自己的代码编译成lib+.h的方式提供给别人是静态链接,这里需要声明一下概念的问题,程序进行链接的时候,lib中是否包含执行代码要看他的类型:


在静态库情况下,函数和数据被编译进一个二进制文件(通常扩展名为*.LIB),编译器在处理程序代码时将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件。这个过程称为"静态链接",此时因为应用程序所需的全部内容都是从库中复制了出来,所以静态库本身并不需要与可执行文件一起发行。


在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。





Modified At 2008-04-25 21:29:10

如何破解Skin++

[点评:值得注意的是这里的破解方法还是比较独特的.程序使用线程,一旦发现他的提示对话框则关闭掉,不让他出现,蛮有意思的.]


1.先到 www.uipower.com下载skin++的试用版本.其实就三个文件

 

         SkinPPWTL.h

         SkinPPWTL.lib

         SkinPPWTL.dll

 

我就不长篇大论叽叽歪歪了,写程序的一看这三个文件就明白是干什么的.下面分析一下如何将试用版本变为正式版本.Skin++在换肤的时候需要调用 skinppLoadSkin函数.该函数负责完成皮肤的切换并弹出一个注册对话框来让你注册.其实只要把这个讨厌的注册对话框干掉就一切OK了.嗯,想法不错,下面就动手吧....

 

2.在App里面封装几个函数,或者你挺懒的话可以直接把下面几个函数拷过去,改改.



一看就明白了.其中m_strPath是程序路径,在App的InitInstance函数里面得到就行.



 

3.在你工程的InitInstance里面调用 theApp.SetSkin(皮肤文件);可以看到没有弹出Skin++的注册窗口,这样就可以正常使用了。

 

另:网上有相关破解的DLL下载,本站Resource有下载   ------   SkinPPWTL.dll





Modified At 2008-04-25 21:41:24