C# 在项目中引用x86 x64的非托管代码的方法

2019-12-30 19:30:00于丽

设置查找的文件

实际上好多人都觉得,应用程序首先是从运行的目录开始查找dll,如果找不到,就去GAC查找,如果还是找不到,就去System查找。实际上这句话是不对的,在没有设置默认查找的文件的时候就是这样,但是软件是可以设置查找文件。

设置的方法使用使用这个dll,请看下面


public int HfwzsnHzhpbbzbn(int txcuiwKjvwu, int hhmzfadnHexkmr)
  {
   if (Environment.Is64BitProcess)
   {
    return HfwzsnHzhpbbzbn64(txcuiwKjvwu, hhmzfadnHexkmr);
   }
   return HfwzsnHzhpbbzbn32(txcuiwKjvwu, hhmzfadnHexkmr);
  }

需要先把 x86 的 dll 放在程序的 x86文件夹,当然对于x64的大家也知道放哪里。

然后在程序运行的时候使用下面的代码


[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
 private static extern bool SetDllDirectory(string path);

这样就可以直接写一个函数,最后的方法是我推荐的。

但是存在一些特殊的文件,他不能放在x86文件夹,所以就需要使用下面的代码特别加载


var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
   path = Path.Combine(path, Environment.Is64BitProcess ? "x64" : "x86");
   SetDllDirectory(path);

查看了项目的代码才看到,实际上还有一个方法,就是在运行的时候,如果当前运行的是x86的,就从x86文件夹复制dll出来,这个方法是速度最慢的。

总结

以上所述是小编给大家介绍的C# 在项目中引用x86 x64的非托管代码的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


注:相关教程知识阅读请移步到c#教程频道。