C# コードから C 関数を呼び出すのに問題があります。VLCプレーヤーにいくつかの機能を追加したいと思い(vlcdotnetを介してソフトウェアで使用しています)、mingwを使用してWindows用のubuntu 12.10でクロスコンパイルしました。関数を書きました。それを Foo と呼びましょう:
__declspec(dllexport) void Foo(vlc_object_t* bar);
今、私はC#からそれを呼び出したい:
[LibVlcFunction("Foo")]
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void Foo(IntPtr pointer);
........
public LibVlcFunction<Foo> Foo { get; private set; }
......
Foo = new LibVlcFunction<Foo>(myLibVlcCoreDllHandle, VlcVersion);
そして、それは失敗します。LibVlcFunction のコンストラクター内には、GetProcAddress と GetDelegateForFunctionPointer の組み合わせがあります。GetProcAddress は「関数 'Foo' のアドレスが存在しません....」で失敗しますが、dumpbin と dep. walker は関数が存在し、彼女の名前は壊れていないと言っています。libvlc.dll をロードして func へのポインターを取得する C++ アプリを作成しようとしましたが、うまくいきました。しかし、C# では失敗します。私は何をすべきか?助言がありますか?