我目前正在导出 Win32 应用程序的一些函数,以便从托管代码中调用它,但我遇到了 AccessViolationException。这是一个非常简单的具有简单类型的 DllImport,但是一旦我在非托管应用程序中调用 malloc 或 printf 之类的函数,它就会引发异常。
这是一个代码示例://C#程序
static void Main(string[] args)
{
uint result = MyClass.ExecuteCommand((byte)10);
Console.WriteLine(result);
Console.ReadLine();
}
//C#类库
public const string AppicationExe= "Application.exe";
[DllImport(AppicationExe, EntryPoint = "ExecuteCommand")]
public static extern UInt32 ExecuteCommand(byte mybyte);
// C 应用程序
__declspec(dllexport) UINT32 __stdcall ExecuteCommand(unsigned char mybyte)
{
printf("Why is it so difficult to make it works !!!!!!");
return 0;
}