0

我写了一个activeX插件并制作了一个cab文件来用2个dll文件打包ocx,然后调用a.dll和b.dll。ocx 依赖于 a.dll,a.dll 依赖于 b.dll。inf 文件是这样的:

[version]
signature="$CHICAGO$"
AdvancedINF=2.0  

[Add.Code]
test.ocx=test.ocx
a.dll=a.dll
b.dll=b.dll

[test.ocx]
file-win32-x86=thiscab
clsid={AB1408A0-10F6-40BA-984D-074D7BDC3126}
FileVersion=3,1,0,17
DestDir=11
RegisterServer=yes

[a.dll]
file-win32-x86=thiscab
FileVersion=2,1,1,16
DestDir=11

[b.dll]
file-win32-x86=thiscab
FileVersion=2,0,0,16
DestDir=11

下载完成后,我发现a.dll在C:/windows/system32中不存在,但其他两个文件已经在其中并且ocx已经注册。

a.dll 是我自己写的。b.dll 是一个第三方库。

我对此感到非常困惑,并渴望得到您的帮助。

4

1 回答 1

0

尝试删除DestDir=11,所以没有任何东西进入 system32 文件夹。您的依赖 DLL 文件将与您的 OCX 放在同一文件夹中。此外,您可能缺少 CRT DLL (MSVC*.DLL)。我建议在您的 C++ 项目设置中切换到静态链接到 CRT。使用Dependency Walker检查您的任何 DLL 是否在目标机器上有任何未解决的依赖关系。

于 2013-08-23T03:13:05.133 回答