我正在尝试将DLL文件导入到我的项目中,我已经尝试过“添加引用”但它不起作用:
'无法添加对* .dll的引用。请确保 文件是可访问的,并且它是有效的程序集或com组件'
我尝试使用'regsvr32'注册dll但它不起作用:
'模块* .dll已加载,但入口点DllRegisterServer已加载 没找到'
最后我使用了DllImport,(我目前正在使用libclamav.dll进行测试)
lImport("libclamav.dll")]
public static extern int cl_scanfile(String path);
private void button1_Click(object sender, EventArgs e)
{
string path="e:\\scan\\111.jpg";
int n;
n = cl_scanfile(path);
}
但执行时出错:
'尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B)'
有什么建议吗?
答案 0 :(得分:1)
听起来你想要在非托管DLL中调用/调用方法。您应该阅读Microsoft提供的Platform Invoke Tutorial,看看是否有帮助。
如果您获得了不正确的格式异常,这可能是因为您的.NET应用程序的目标是“任何CPU”,但您尝试加载的DLL是32位DLL(并且您使用的是64位计算机)。如果是这种情况,您可能希望将.NET应用程序的“平台目标”设置为“x86”,看看是否有帮助。
要成功进行p / Invoke,您还需要在搜索路径中的某个位置调用您正在调用的DLL(及其所有依赖项)。确保这一点的最简单方法是将DLL和所有依赖项复制到.NET应用程序的bin \ Debug或bin \ Release文件夹中,看看是否有帮助。