所以我得到了用C编写的以下函数:
#include <stdio.h>
#include <stdlib.h>
#define Dll __declspec( dllexport )
int main()
{
return 0;
}
Dll void printHelp()
{
printf("Halcyon compiler help:\n");
printf(" -compile [File] - Compiles file to executable\n");
printf(" -convert [File] - Converts file to IL. File's will be written down here\n");
printf(" -result [Text] - how does given line look in IL\n");
return;
}
Dll void printInfoHelp()
{
printf("-info\n");
printf(" classes - Prints all classes\n");
printf(" elements - Prints currently loaded elements\n");
printf(" version - Prints current version of SlashButter\n");
return;
}
这是我导入函数的C#代码:
[DllImport(@"Utils.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void printHelp();
[DllImport(@"Utils.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void printInfoHelp();
但是,当我致电printHelp()
或printInfoHelp()
时,我会System.AccessViolationExcepion
。我在Stackoverflow上查了很多类似的问题,但似乎没有人帮助我。我正在编译x86,视觉工作室托管过程被禁用,允许不安全的代码,CallingConvention
添加,但它仍无济于事。
有什么我做错了吗?这真是令人沮丧。
提前感谢您的回复。
编辑:我在这里意外没有粘贴整个文件。添加了#include行。