吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 990|回复: 17
收起左侧

[求助] 【C#】关于C#编译的X86程序求解

[复制链接]
jidesheng6 发表于 2023-4-10 15:36
500吾爱币

这几天在网上看到了一些关于C#程序编译的时候选择AnyCpu、X86、X64的编译方式,对程序的可用内存大小不同的文章,有几个疑问

  • X86程序,不管系统内存有多少,对程序而言,可用的内存只有4GB,操作系统还要预留2GB,实际程序可用的只有2GB吗?
  • 如果用户的电脑内存是64位的,但是内存只有4GB,对于操作系统而言,可用的内存可能只有3GB多一点,可能更少,那程序是不是就很容易发生OUT OF MEMORY的异常了

后面看到文章里面也有可以用editbin来让X86的程序可用内存超过2GB的方法,但是这样是不是程序还是不能拥有系统的全部内存?

我们公司有一个比较老的软件,应该是.netframework3.5开发的,开发的时间应该是2004年,最终在2013年就没更新了,软件会用到TWAIN协议来操作扫描仪扫描的

想问一下,如果在有源代码的情况下,就算升级到最新的.netframework4.x 编译成X64版本的,就目前的扫描仪驱动来说,是不是也没办法被64位程序使用?比如佳能的DR-G1100、DR-G7550C、DR-G2090、DR-G2090S、DR-M160 II、DR-M260这些扫描仪是不是都没有纯64位的驱动?

还请大佬解答,万分感激

最佳答案

查看完整内容

1. 在32系统最大可用内存是4gb 预留2gb 实际使用最多也就2gb 但如果是64说系统即使只有4gb 程序也能够调用更多内存空间。 2.对于64位系统 x86程序并不像x64程序那样可以更好的分配系统资源 减少内存不足,所以在条件允许下 建议使用64位编译。 3.editbin也许能改善x86内存不足的情况,但同时也可能会影响程序的稳定性,所以还是那句话 如果条件允许 还是建议使用64编译,没办法之下可以试试editbin。 4.必须扫描仪驱动支 ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

低调(d-iao) 发表于 2023-4-10 15:36
本帖最后由 低调(d-iao) 于 2023-4-10 17:14 编辑

1. 在32系统最大可用内存是4gb 预留2gb 实际使用最多也就2gb
但如果是64说系统即使只有4gb 程序也能够调用更多内存空间。

2.对于64位系统 x86程序并不像x64程序那样可以更好的分配系统资源 减少内存不足,所以在条件允许下 建议使用64位编译。

3.editbin也许能改善x86内存不足的情况,但同时也可能会影响程序的稳定性,所以还是那句话 如果条件允许 还是建议使用64编译,没办法之下可以试试editbin。

4.必须扫描仪驱动支持64位才可以,老的大部分驱动并不支持64位系统 即使升级了程序也可能无法支持64位程序。

建议下次如果同时多问题提问,可以加上问题编号 这样也方便我们逐一的进行解答 不然还得从问题里来回找出你提出了多少个问题。

顺便问一句 为何你们公司不重购一台新款式? 计划书走起

点评

谢谢指正!下次改正提问方式!  发表于 2023-4-10 17:31
xia先生 发表于 2023-4-10 15:43
你搞错概念了。R3是R0的区别。驱动是R0的所以64位系统就肯定是64位驱动。R3可以32也可以64.  R3的应用程序是有接口跟驱动通讯的。
Light紫星 发表于 2023-4-10 15:52
如果扫描仪驱动没有64位的话,那么程序64位与否也无关系了,而且程序和驱动之间通过系统接口调用,程序多少位不影响调用驱动的
wincao 发表于 2023-4-10 15:55
1.的确如此,系统会用掉1G多内存,给程序就2G左右了。可以通过LargeAddressAware选项,开启大内存,但不一定能解决内存不足。
2.就算给电脑加8G内存,也不能解决OUT OF MEMORY的异常啊,各种原因都有。现在找超过8G电脑太容易了吧,想测试就行了吧。
 楼主| jidesheng6 发表于 2023-4-10 15:56
Light紫星 发表于 2023-4-10 15:52
如果扫描仪驱动没有64位的话,那么程序64位与否也无关系了,而且程序和驱动之间通过系统接口调用,程序多少 ...

这个是x86编译出来获取到的扫描仪列表

image.png

这个是X64编译出来获取到的扫描仪列表,现在感觉尬住了

image.png
 楼主| jidesheng6 发表于 2023-4-10 15:58
wincao 发表于 2023-4-10 15:55
1.的确如此,系统会用掉1G多内存,给程序就2G左右了。可以通过LargeAddressAware选项,开启大内存,但不一 ...

基本等于无解了吧,软件倒是也能用,就是用户的内存就算很大,读入的图片一多,软件内存占用超过2gb就gg了
Light紫星 发表于 2023-4-10 15:59
jidesheng6 发表于 2023-4-10 15:56
这个是x86编译出来获取到的扫描仪列表

我之前遇到过一种语音合成引擎,x86和x64编译获取到的列表不一样的情况,你这个可能也是类似的原因,要看你获取扫描仪的接口调用的什么,有些可能是调用dll实现的,可能获取到的就不太一样,你看看能不能通过系统调用获取到这个列表
Light紫星 发表于 2023-4-10 16:01
jidesheng6 发表于 2023-4-10 15:58
基本等于无解了吧,软件倒是也能用,就是用户的内存就算很大,读入的图片一多,软件内存占用超过2gb就gg ...

感觉只能从软件层面去优化代码了,图片原生加载的话好像一张图都几十上百M的内存的
 楼主| jidesheng6 发表于 2023-4-10 17:31
低调(d-iao) 发表于 2023-4-10 15:36
1. 在32系统最大可用内存是4gb 预留2gb 实际使用最多也就2gb
但如果是64说系统即使只有4gb 程序也能够调用 ...

佳能以前的开发组走了,1100算是用过比较好的机器了,新的2090 2090s其实就是1100套壳,然后改了下吃纸深度,1100一次性可以放500张,新的2090只能放200多,我都不知道怎么说了,而且2090的驱动还特别离谱,在twain调用的时候,如果出现了双张进入或者卡纸,会直接把我们程序那块事件挂住,软件直接进入死循环了,但是1100系列的驱动就没事,包括260的驱动也是和2090一样的问题,260的驱动还会经常报-27错误,国外去搜了,很多人都有这种问题,我们都不太喜欢新机器,心里没底,用着难受

点评

我官方查了一下DR-G1100 是有64位驱动的 [attachimg]2606399[/attachimg]  详情 回复 发表于 2023-4-10 17:46
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-29 09:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表