我编写了一个activeX插件并制作了一个cab文件来将ocx打包为2个dll文件,然后调用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
下载完成后,我发现C:/ windows / system32中不存在a.dll,但其他两个文件已经在其中,并且ocx已经注册。
我自己写错了a.dll。 b.dll是第三方库。
我对此感到很困惑,并渴望得到你的帮助。
答案 0 :(得分:0)
尝试删除DestDir=11
,因此没有任何内容进入system32文件夹。您的依赖DLL文件将放在与OCX相同的文件夹中。此外,您可能缺少CRT DLL(MSVC * .DLL)。我建议在C ++项目设置中静态切换到CRT链接。使用Dependency Walker检查您的任何DLL是否在目标计算机上有任何未解析的依赖项。