C#调用动态链接库方法

[DllImport("mydll.dll")]
public static extern int Add(int a,int b);

 private void btn_add_Click(object sender, EventArgs e)
        {
            int sum=Add(5,6);
            MessageBox.Show(sum.Tostring());            
        }

如果需要调用同一个dll文件中的两个不同函数,则需要再次引动dll

 [DllImport("mydll.dll")]
 public static extern void change();
 [DllImport("mydll.dll")]
 public static extern void line(out double left,out double right);

出现问题列表:

1.找不到函数入口点

解决方法:大部分原因是在创建dll文件时,dll文件的函数没有添加 extern “C” 或 __declspec(dllexport)。

2.正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

解决方法:

1、把VS菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock 的选中状态去掉。
2、如果异常(exception)这一项没有的话,在工具—自定义—命令选项卡—左边选择调试–右边把异常托到菜单里。
3、快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态去掉。

3.试图加载格式不正确。

解决方法:

出现这个报错,主要原因是dll与C#不在同一平台导致。如果dll使用x64,而C#也需要选为x64。


来源: