在c#中调用一个简单的c函数会产生System.AccessViolationException

时间:2015-08-20 09:35:57

标签: c# .net c

所以我得到了用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行。

0 个答案:

没有答案