質問: CharSet.Ansi)] extern static int test(int num); (後略) ``` コンパイルエラーは、下記です。 test.cs(7,16): error CS0120: 静的でないフィールド、メソッド、またはプロパティ 'main.curdir' で、オブジェクト参照が必要です なにか明示的にカレントディレクトリのDLLを読み込むようにする方法はありますでしょうか。 よろしくお願いいたします。
回答: 以下の記事に出ています。 DllImportで実行時にdllを指定するには? > > 結論 > > DllImportでdllを読み込む前にLoadLibrary関数でDLLを読み込んでおくことで同名のdllは、今後、読み込み済みのDLLを参照するようになる。 > > > 上記対処を行えば、以下のパス指定は無くしてファイル名だけで良くなるのでは? ``` [DllImport(curdir+"\\test.dll", CharSet = CharSet.Ansi)] ``` 追記 == 検索し直したら、こんな記事が見つかりました。 こちらの方がソースコードがすっきりするでしょう。 DLLの読み込み。DLLを探す検索パスの順序を変更する。... アプリケーション構成ファイル(application名.exe.config)またはDLL/COMリダイレクションファイル(application名.exe.local)で指定するようです。 関連するMicrosoftの記事はこれです。 Element<プローブ>要素 DLL/COM リダイレクション