У меня есть приложение C#.NET 2.0 CF, которое импортирует функцию из собственной библиотеки DLL со следующей подписью:
__declspec( dllexport ) void DLL_Foo( int count, ... );
Мое приложение C# P/Invokes, которое работает следующим образом:
public sealed class MyObject
{
public void Foo()
{
NativeMethods.DLL_Foo(2, __arglist("a","b"));
}
internal static class NativeMethods
{
[DllImport("My.dll")]
internal static extern void DLL_Foo(int count, __arglist);
}
}
Но когда я вызываю MyObject.Foo
, я получаю System.MissingMethodException
.
Что мне нужно изменить, чтобы это заработало?
Спасибо, PaulH
Изменить: если я изменю определение импорта на:
internal static extern void DLL_Foo(int count, [MarshalAs(UnmanagedType.LPWStr)]string a, [MarshalAs(UnmanagedType.LPWStr)]string b);
затем позвоните:
NativeMethods.DLL_Foo(2, "a", "b");
Работает без проблем, так что это что-то с моим __arglist
использованием.