Пытаясь использовать стороннюю нативную DLL из C #, я получаю исключение, что точка входа DLL не была найдена, и я понятия не имею, в чем причина.
dumpbin /exports
дает мнеследующий символ: ?Foo@@YA_NPBDII0II_NMEEE01PAE@Z
.Я решил это с помощью undname
, который возвращает: bool __cdecl Foo(char const *,unsigned int,unsigned int,char const *,unsigned int,unsigned int,bool,float,unsigned char,unsigned char, unsigned char,char const *,bool,unsigned char*)
Поэтому я попытался импортировать функцию следующим образом:
[DllImport("FooDll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] // evtl. __thiscall?, Charset?
private static extern bool Foo(string name, uint x, uint y, string app, uint width, uint height, bool switch, double factor,
byte r1, byte g1, byte b1, string store, bool switchBack, [In, Out] byte[] result);
Я также попытался с CallingConvention = CallingConvention.ThisCall
и без кодировкипараметр, но возникает то же исключение.
Есть идеи, где искать?