当前位置: 代码迷 >> 汇编语言 >> 汇编语言为什么用不下BCGControlBar和Xtreme ToolkitPro
  详细解决方案

汇编语言为什么用不下BCGControlBar和Xtreme ToolkitPro

热度:928   发布时间:2013-02-26 00:00:00.0
汇编语言为什么用不上BCGControlBar和Xtreme ToolkitPro
我想给我的软件加上Office 2007或2010的皮肤

想到AppFace、BCGControlBar、Xtreme ToolkitPro这三款软件

DirectUI、SkinMagic、SkinSE里没有我要的皮肤,而且我不想自己做……

AppFace不是注册版,用起来全是[Skinned by appface.com]

我破解了SkinMagic和SkinSE,但这个我怎么也搞不定,网上也难找

BCGControlBar、Xtreme ToolkitPro更麻烦

虽然也是未注册版,可是我用都用不起

以下是代码

.686p
.model flat,stdcall
option casemap:none

include Windows.inc
include Kernel32.inc
include User32.inc
include Strings.mac
includelib Kernel32.lib
includelib User32.lib
includelib BCGCBPRO1700Eval60.lib

BCGCBProSetResourceHandle PROTO :DWORD

.code
Start:
invoke LoadLibrary,$CTA0('BCGPStyle2010Blue170.dll')
invoke BCGCBProSetResourceHandle,eax
invoke MessageBox,0,0,0,0
invoke ExitProcess,0
end Start

不知道是不是这么用的,那英文的说明我只看懂了一半

然后是Xtreme ToolkitPro的

.686p
.model flat,stdcall
option casemap:none

include Windows.inc
include Kernel32.inc
include User32.inc
include Strings.mac
includelib Kernel32.lib
includelib User32.lib
includelib ToolkitPro.lib

SetApplyOptions PROTO :DWORD,:DWORD

.code
Start:
invoke SetApplyOptions,$CTA0('Office2007.cjstyles'),0
invoke MessageBox,0,0,0,0
invoke ExitProcess,0
end Start

以上两个编译的时候说找不到BCGCBProSetResourceHandle、SetApplyOptions两个导出函数

我在BCGCBPRO1700Eval60.lib、ToolkitPro.lib里分明找到了这俩函数并且说明上也说过这两个函数,可是编译的时候就是不行:

Assembling: XtremeToolkitPro.Asm
Linking: XtremeToolkitPro.Obj
XtremeToolkitPro.Obj : error LNK2001: unresolved external symbol _SetApplyOption
s@8
XtremeToolkitPro.exe : fatal error LNK1120: 1 unresolved externals
------解决方案--------------------------------------------------------
按你所说,是不应该有这个错误。可以先用 dumpbin /EXPORTS ToolkitPro.lib 查看下其导出函数的内部名称,是否和错误提示的一致。或者,将涉及到的文件都上传来看看?
------解决方案--------------------------------------------------------
1 确定函数在lib中

2 确定你的函数proto正确
------解决方案--------------------------------------------------------
问题解决了,用dumpbin /EXPORTS ToolkitPro.lib发现它的输出函数就是前面有一堆乱七八糟的字符,汇编里用LoadLibrary加载DLL,再用GetProcAddress获取地址就行,用GetProcAddress时输入的函数名也要和dumpbin出来的结果一样,前面要有那一堆乱七八糟,就行了。
  相关解决方案