none
DLL内のエントリーポイントが読めません。 RRS feed

  • 質問

  • アンマネージドコードのDLLをC#のプログラムで読もうとしています。

    DLLはDEGUGフォルダなどにコピーし、DLLプロパティーウインドウで出力ディレクトリーにコピーする

    指定をしました。

    プログラムを実行すると、DLL内の関数を呼び出すとことで関数のエントリーポイントが読めないという

    エラーメッセージが出力されます。関数は複数あるのですが、プログラムを一部コメントアウトして実行

    してみても、今度は別の関数のところで同じメッセージが出ます。

    DLL自体は読み込めていると思います。また関数はDllImportで読み出し、必要な引数は正しくマー

    シャリングしたつもりですが、原因としてどういうことが考えられるでしょうか?

     

     

    2007年10月12日 3:54

すべての返信

  • エクスポートしてないんじゃないすか。

     

    正直、情報が足りなさ過ぎます。

    2007年10月12日 4:45
  • 情報が足りなくて申し訳ございません。本来、前回の続きで質問すべきだったのでしょうが、操作方法がわからず、新しい質問にしてしまいました。前回の質問は以下の通りです(引用のやり方がわからずコピーしました)。

    ****

    C#でアプリケーションソフトを開発しています。

    Visual studio 2005で既存のDLL(マイコン業者が作成)をプロジェクトが入っているフォルダにコピーし、「既存項目の追加」でプロジェクトに追加しました。ソリューショエクスプローラでもDLLが表示されています。

    コンパイルは通ったのですが、アプリケーションを実行させ、DLLを呼び出すメソッドのところでDLLが見つからないというエラーが出ます。また「参照の追加」でdllを指定しようとすると「これは正式なDLLではない」といった旨のエラーメッセージが出力されます。どうしたらいいのでしょうか。

     ところでVisual studio 2005ではプロジェクト名のフォルダ内にもう一つ同名(プロジェクト名)のフォルダがあります。通常のソースは一番内側のフォルダ内に入っていますが、DLLは内側と外側のどちらにコピーすべきでしょうか?

     このDLL自体に問題がないと仮定した場合、操作方法で何か問題は考えられるでしょうか?ちなみにDllImportでDll内の関数を呼び出し、必要に応じてIntPtr型の引数は構造体にマーシャリングしました(Marsahl.StructureToPtrやMarshal.PtrToStructureを使用)。String型(構造体に入っている)の変数に値を代入し、IntPtr型にマーシャルした後、それを引数にしてDLL内の関数を呼び出して上記のエラーが出ました。

    ****

     

    2007年10月12日 5:25