0

私が書いている Windows フォーム コントロール ライブラリ プロジェクト (C++) は、アンマネージ dll を使用しています。管理されていない dll には、ヘッダー ファイル (チェシャ猫) があります。そして、それをコントロール ライブラリ プロジェクトに含めるだけです。そして、アンマネージ dll の関数を呼び出します (もちろん、適切なマーシャリングを使用して)。これにより、コンパイルおよびビルドが行われます。問題は、マネージ C++ winform アプリケーションであるスキャフォールディングのツール ボックスにコントロールを追加しようとすると、VS2005 が .Net モジュールではないと文句を言うことです。

Windows フォーム コントロールとして MFC dll を使用して変換している人々を見てきました。私は何を間違っていますか?.

4

1 に答える 1

1

おそらく、VS2005 がネイティブの .DLL を見つけられないことが原因です。この .DLL は、ネイティブ .DLL の「通常の」方法で検索されます。

  • 現在のディレクトリ(だいたいVSの起動ディレクトリだと思います)
  • アプリ ディレクトリ (%ProgramFiles%\Microsoft Visual Studio のどこか...)
  • %PATH% ディレクトリ。

上記のディレクトリのどこかにネイティブ DLL を配置して、より良い結果が得られるかどうかを試すことができます。

ネイティブ .DLL の検索の問題を回避できるため、ネイティブ パーツを静的にして .NET プロジェクトに静的にリンクすることを強くお勧めします (可能な場合)。(これは、多くの問題のために私が行ったことです。たとえば、.NET DLL を処理し、それらをすべての参照 DLL を含むトランスレータ パッケージにパックできるトランスレータ ツール [SDL Passolo] があります...ただし、.NET DLL のみであり、ネイティブではありませんDLL!)。

于 2009-04-23T21:48:33.840 に答える