0

私は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

ダウンロードが完了した後、a.dll が C:/windows/system32 に存在しないことがわかりましたが、他の 2 つのファイルは既にそこにあり、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 に答える