0

別のプログラムを使用して特定の関数を実行し、USB デバイスと通信する必要がある Visual C++ プログラムがあります。この 2 番目のプログラムは、USB デバイスの会社によって提供されます。

同社は、通信モジュールにアクセスするための DLL とライブラリも提供しています。

プログラムは問題なく動作します。USB デバイスとはうまく通信できます。

問題は、私の Visual C++ プログラムの機能は USB デバイスとの通信だけではないため、通信モジュールがインストールされていなくてもプログラムを開くことができるはずです。

メソッド RegOpenKeyEx を使用して、通信モジュールがインストールされているかどうかを確認することに成功しました。したがって、通信モジュールが利用できない場合は、関数を呼び出して USB デバイスにアクセスすることを避けることができます。

問題は、通信モジュールのないコンピュータで私のプログラムがまだ開かないことです。「アプリケーションを正しく開始できませんでした (0x000007b)。[OK] をクリックしてアプリケーションを閉じます。」というエラーが表示されます。

私の問題を解決することは可能ですか?

4

1 に答える 1

2

DLL に静的にリンクする代わりに、DLL を動的にロードする必要があります。次に、インストールされているかどうかに基づいて、ロードするかどうかを選択できます。これを行う方法を示す記事はここにあります.動的にロードされたDLLのコンテンツへのアクセスに関する詳細情報を含むSOの質問はここにあります.

于 2013-06-12T13:03:11.730 に答える