首页 新闻 赞助 找找看

C# 根据计算机是32位还是64位,调用不同名字的dll?

0
悬赏园豆:10 [已解决问题] 解决于 2014-12-10 14:50

[DllImport("x86.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int Login(string usr, string pwd, string params);

 

就是说程序自动判断,如果是32位,调用"x86.dll",如果是64位,调用"x64.dll"。

哪位大神知道,有没有什么简单、实惠的做法?

The Kite Runner的主页 The Kite Runner | 初学一级 | 园豆:10
提问于:2014-12-08 16:16
< >
分享
最佳答案
0

.NET提供一个Environment.Is64BitProcess可以查看是64位还是32位程序,2楼说的也是对的,至于"x86.dll"你写2个方法吧

收获园豆:10
56180825 | 小虾三级 |园豆:1756 | 2014-12-08 19:39

区别32和64的方法网上可以找到很多,我就是想避免写两个方法

The Kite Runner | 园豆:10 (初学一级) | 2014-12-09 08:38
其他回答(5)
0

严格说起来,所有关于兼容性的需求都是高级需求。

没钱、没耐心、没有成本预算的,直接拉倒吧!

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-08 16:41
0

根据IntPtr判断是4个字节就是32位呗,否则就是64位 

秋壶冰月 | 园豆:5903 (大侠五级) | 2014-12-08 18:27

问题是这个怎么改,"x86.dll"是写死的

[DllImport("x86.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int Login(string usr, string pwd, string params);

支持(0) 反对(0) The Kite Runner | 园豆:10 (初学一级) | 2014-12-08 18:36
0

条件编译

aspnet | 园豆:79 (初学一级) | 2014-12-08 23:30
0

你又想避免写两个方法, 那没办法了。 

这么搞太扯蛋了。32和64位应分为不同的程序。  你这样去判断, 影响性能和心情。

你可以开发另一个小安装(更新)程序, 用来下载\安装你的主程序, 在你这个小程序里就去判断系统版本然后自动去下载安装相应的主程序。 

64和32应全分开。  去看看别人的软件, 都是分64版和32版的。  

问天何必 | 园豆:3311 (老鸟四级) | 2014-12-09 09:00

我的是Web Service 部署的时候不确定对方是32位还是64位的

DLL有两个32位和64位名字不同。

经理要求程序自动判断

支持(0) 反对(0) The Kite Runner | 园豆:10 (初学一级) | 2014-12-09 14:15
1

dll 的名字一样,把 x64 版本的拷贝到 System32 目录下,x86 版本的拷贝到 SysWOW64 目录下。

Launcher | 园豆:45045 (高人七级) | 2014-12-09 09:17

dll名字不一样

支持(0) 反对(0) The Kite Runner | 园豆:10 (初学一级) | 2014-12-09 14:12

@The Kite Runner: 改成一样

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-12-09 14:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册