C#运行的时候提示“无法加载DLL(XXXX.dll)”,DllImport设置绝对路径后就不报错了。 DllImport里不要设置路径,直接加载***.dll,这个dll保持跟你程序的exe在同一个目录就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说明你的dll没有放到exe同目录下来 刚刚发现,把项目从AnyCPU改成x86之后,就不报错了……蛋疼。 放在同一个目录了,刚刚发现问题的真正原因了,因为我之前项目都是用AnyCPU的,改成了x86就可以正常使用哪个DLL了。 吧DLL添加到项目然后属性,每次都重新生成 放在同一个目录了,刚刚发现问题的真正原因了,因为我之前项目都是用AnyCPU的,改成了x86就可以正常使用哪个DLL了。开发64位时,选择anycpu,import调用dll没有类似问题应该不是这里的原因吧不过问题解决了就行 一般是dll和exe没在一个目录引起这种问题 Any CPU会让程序在32位系统下以32位运行,64位系统下以64位运行(如果选了Prefer 32-bit则会在32位下运行)。x86在32位和64位系统下都以32位运行。x64在32位系统不能运行,在64位系统以64位运行。32位进程只能加载32位dll,64位进程只能加载64位dll。所以如果要DllImport非系统的dll,就不要用Any CPU,除非自己手动写代码选择加载dll的正确版本,否则会有问题的。windows自带的dll没问题是因为它64位的版本在C:\Windows\system32下,32位的版本在C:\Windows\SysWOW64下,系统会自动选择合适的dll。 使用第三方dll之前,先了解一下对方的dll是否只能在x86下才能正常引用。 把第三方DLL文件放到你的程序的根目录==>bin文件夹==>Debug文件夹 下,然后程序调用的地方就不用写绝对路径或相对路径,只要写文件名+后缀名 就可以。 如 xxxx.dll asp.net中事务(transactions)的作用是什么? ListBox控件绑定 VS08/10 怎么 做 手机 wap 站点开发 提取网页代码问题 监听鼠标 新手问一下一个很简单的关于窗口按钮的问题 编码转换:UTF-8--->big5 求救各位大神 重分有赏,有关彩信方面,参与者均有分!!! MDI 一天未解决问题,请帮下我,没有办法,今天要加班了 C#用COM导出Excel时,Excel不保存在服务器上,用Session保存Excel内容,直接给客户端下载
开发64位时,选择anycpu,import调用dll没有类似问题
应该不是这里的原因吧
不过问题解决了就行
x86在32位和64位系统下都以32位运行。x64在32位系统不能运行,在64位系统以64位运行。
32位进程只能加载32位dll,64位进程只能加载64位dll。所以如果要DllImport非系统的dll,就不要用Any CPU,除非自己手动写代码选择加载dll的正确版本,否则会有问题的。windows自带的dll没问题是因为它64位的版本在C:\Windows\system32下,32位的版本在C:\Windows\SysWOW64下,系统会自动选择合适的dll。