一个linux下的东西,用Cygwin编译成dll,然后连同cygwin1.dll一起放在c#项目里调用,是否可行?我试了一下://test.h
int Function (int a, int b);
//test.c
int Function (int a, int b)
{
    return a + b;
}Cygwin下输入: gcc -shared test.c -o test.h -o test.dll   生成一个test.dll
public class abc
{
    [DllImport("test.dll")]
    public static extern int Function(int a, int b);    static void Main(string[] args)
    {
        Console.WriteLine("Result:%d", Function(1, 1));
    }
}
把test.dll和cygwin1.dll一起拷贝到Debug目录下运行无任何反应,点关闭出现程序无响应。
由于有个linux下用c写的东西,想在win下跑,是说c#无法调用Cygwin下生成的dll吗?

解决方案 »

  1.   

    你这个dll是windowsxia格式的dll?? 应该不是吧。
      

  2.   


    我想应该是吧,我用Viewdll.exe(DLL函数查看器)也能看到这个dll的导出函数名的。
      

  3.   

    你先用DEPENDS.EXE看下test.dll和cygwin1.dll中是否还依赖其它的DLL.另外建议楼主写个无参无返回值的函数,弹出对话框看是否能调用成功.http://wenku.baidu.com/view/ed9bb951f01dc281e53af046.html
    cygwin有安装包,只拷cygwin1.dll估计是缺少一些依赖项吧,你安装后再试试.