DllImport里不要设置路径,直接加载***.dll,这个dll保持跟你程序的exe在同一个目录就可以了

解决方案 »

  1.   

    说明你的dll没有放到exe同目录下来
      

  2.   

    刚刚发现,把项目从AnyCPU改成x86之后,就不报错了……蛋疼。
      

  3.   

    放在同一个目录了,刚刚发现问题的真正原因了,因为我之前项目都是用AnyCPU的,改成了x86就可以正常使用哪个DLL了。
      

  4.   

    吧DLL添加到项目然后属性,每次都重新生成
      

  5.   

    放在同一个目录了,刚刚发现问题的真正原因了,因为我之前项目都是用AnyCPU的,改成了x86就可以正常使用哪个DLL了。
    开发64位时,选择anycpu,import调用dll没有类似问题
    应该不是这里的原因吧
    不过问题解决了就行
      

  6.   

    一般是dll和exe没在一个目录引起这种问题
      

  7.   

    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。
      

  8.   

    使用第三方dll之前,先了解一下对方的dll是否只能在x86下才能正常引用。
      

  9.   

    把第三方DLL文件放到你的程序的根目录==>bin文件夹==>Debug文件夹 下,然后程序调用的地方就不用写绝对路径或相对路径,只要写文件名+后缀名 就可以。 如 xxxx.dll