在C#中替代BigInteger.ModPow();的方法
我正在寻找C#的BigInteger软件包的替代方案,该软件包已与Net 4.x一起引入. 使用此对象的数学操作非常慢,我想这是由于算术学以比原始类型更高的级别完成的事实 - 或不良优化. int64/long/ulong或其他64位数字缩小的方式,无法正确计算 - 我说的是64位整数的64位成员. 希望有人可以建议我的东西.预先感谢. 解决方案 老实说,如果您的数字非常大,需要使用它们进行大量计算,并且BigInteger库仍然没有为您削减,为什么不使用任何语言或工具包将其卸载到外部过程中你知道最好吗?您是否真的被限制在编写您要在C#中完全完成的一切? 例如,您可以卸载到 c#. 中 其他解决方案 Biginteger确实非常慢.原因之一是它是不变性的. 如果您执行A = A -B,则将获得A的新副本.通常这很快.使用BigInteger并说2048块的整数需要分配额外的2KB. 它也应取决于整体化(我认为不是那么复杂).我的意思是,对
16 2024-04-26
编程技术问答社区
在WINDOWS7 64BIT中连接插座的问题
嘿.我一直在寻找解决这个问题的解决方案,没有运气.我想知道,将插座代码从Winxp 32位切换到Win7 64位时,这是否是一个已知问题.我有一个相当简单的套接字例程,在winxp 32bit中运行良好,但是插座.连接呼叫正在抛出"无法建立连接,因为目标机积极拒绝了它127.0.0.1:48000" > 我已经在该程序的Win7防火墙中添加了一个例外,并进行了两倍检查以确保其添加的规则允许所有端口. 我用来设置这些简单插座的代码如下: 听力插座: byte[] bytes = new Byte[8192]; IPHostEntry ipHostInfo = Dns.GetHostEntry("localhost"); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 48000); _ListenerSocket
18 2024-04-26
编程技术问答社区
两个双倍值相加时的算术错误
可能的重复: 浮点inccuracy示例 java 我在试图调试一个分类程序时抓住了这个问题,该程序检查两个值是否相等.获得值只是在两个双变量上进行一些添加:0.31 + 0.27. 当将这两个与其他物体的总和也等于0.58的总和相比时,它告诉我比较并不相等.查看第一个对象的总和,我看到它列出为0.58000000000000007.想知道这是否是我的代码,我创建了一个简单的控制台应用来测试它: static void Main(string[] args) { double val1 = .31; double val2 = .27; Console.WriteLine("Value 1: " + val1); Console.WriteLine("Value 2: " + val2); double added = val1 + val2; if (!a
20 2024-04-25
编程技术问答社区
WIX项目在X64平台上构建失败
我有一个项目,其中包括一个窗口安装的XML项目,该项目构建了MSI.该源在32位平台计算机中正常工作,您可以轻松地构建解决方案.但是,当试图在64位平台计算机中构建源时,WIX项目中发生了错误.以下是错误. 是什么让Wix Project抛出此错误? Wix支持64位MSI创建吗? (我正在使用Visual Studio 2012) 解决方案 Wix支持创建一个64位MSI,但是如果您使用Wix Toolset创建的WIX项目,则必须更改WIX的CSPROJ文件.在普通项目可以让您打开属性并设置平台的地方,无论如何,Wix项目都不会通过GUI. 以下将允许该项目在x64中进行编译(我不支持x86,所以我不两个设置). Debug x64
20 2024-04-25
编程技术问答社区
C# SpeechSynthesizer-"系统上没有安装语音"
我试图制作一个简单的控制台程序,该程序使用System.Speech.Synthesis使用SpeechSynthesizer将文本转换为语音,但行不通. 我正在使用64位Windows 7和Visual Studio 2010(我认为使用.NET Framework 4.0?) 程序: using System.Speech.Synthesis; // *skip* SpeechSynthesizer speech = new SpeechSynthesizer(); speech.SetOutputToDefaultAudioDevice(); speech.Speak("Hello world"); InvalidOperationException发生在LINE speech.Speak(...)中,消息系统上安装了无语音或当前安全设置没有可用的语音. speech.GetInstalledVoices()表明安装了Microsoft Anna,并且它
20 2024-04-25
编程技术问答社区
在Windows 7 64位上未注册的Jet 4.0的问题
我正在尝试在硬盘驱动器上运行的程序,该程序使用Microsoft Jet OLEDB打开并从MS Access数据库中获取信息.问题是,当我尝试运行程序时,Visual Studio会给我这个错误: "'Microsoft.jet.oledb.4.0'提供商未在本地计算机上注册." 我尝试构建该程序以瞄准" X86"而不是"任何CPU",但这无效.我还在Windows \ Syswow64文件夹中查看(64位等于Windows \ System32文件夹32位机器上的文件夹). MSJET40.DLL和MSJETOLEDB4​​0.dll文件都在此文件夹中,因此我知道文件存在.我还尝试在命令提示符中转到此文件夹,并为两个文件键入" regsvr32".我看到了用于在另一个网站上注册DLL的方法. 我的问题是如何让Jet 4.0公用事业在Windows 7 64位机器上工作? 解决方案 实际上,Syswow64目录是32位文件.如果您在System32中有MSJE
8 2024-04-25
编程技术问答社区
RyuJIT-与ushort和Equals覆盖的错误(64位)
在将32位托管应用程序移植到64位时,我观察到了equals()在结构中覆盖的奇怪行为. 您在 github . 要重现错误,您应该在"优化"标志上编译库.这是发布配置上的默认值.必须在没有任何优化的情况下编译消费testApp.首选32位必须被禁用以启动为64位应用程序.请参阅GitHub上的注释! 库包含一个结构,该结构实现了具有简单的代码行实现的可观接口. public bool Equals(StructWithValue other) { return value.Equals(other.value); } 此代码调用USHORT/UINT16类型的Equals方法.如果您使用提出的配置构建解决方案,则所有高于32767的值都将失败.您以32768的ushort值相等,"其他"的值也为32768.但是Equals()将返回所有值32767的false. 如果您更改了使用'=='运算符的方法,则代码将起作
4 2024-04-25
编程技术问答社区
关于Interop.CDO的问题
我创建了一个使用LIB的应用程序(编译了任何CPU)也编译为任何CPU(库参考Interop.cdo),并且我有此错误消息: 无法加载文件或汇编'Interop.cdo,版本= 1.0.0.0,culture =中性,publicKeyToken = null'或其依赖项之一.以不正确的格式加载程序. 问题与64/32兼容性有关.解决这个问题吗? 感谢您的帮助. 解决方案 我认为CDO在上个世纪被弃用.当然,它永远不会有64位版本.没有什么意义,.NET有很好的SMTP支持. 如果需要,请在EXE项目上使用Project +属性,构建选项卡,Platform target = X86.如果是ASP,则必须在32位应用程序池中运行Web应用程序. 其他解决方案 我不知道您的问题是什么,但我建议您不再使用COM组件.您不能使用系统. net.mail ? 一些代码可能会有所帮助: MailMessage message = new Mail
14 2024-04-25
编程技术问答社区
来自HRESULT的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY)。
我在Windows 2003计算机上创建Windows服务,并使用DSOFILE修改一堆文档上的自定义属性.这可以正常工作,直到我将服务安装在Win2k8机器上,它给我带来以下错误: 错误[2010-09-06 13:17:12,317] 发生未知错误: system.invalidcastException:无法 铸件类型对象 'dsofile.oledocumentpropertiesclass' 到接口类型 'dsofile._oledocumentProperties'.这 操作失败了,因为 com上的查询呼叫 与IID接口的组件 '{58968145-CF01-4341-995F-2EE093F6ABA3}' 由于以下错误而失败: 错误加载类型库/DLL. (Hresult的例外:0x80029c4a (type_e_cantloadlibrary)). 我所有的项目都设置为x86,而我使用procmon来监视所请求的文件,没有任何线索.有人对如何解决此问题有任何想
68 2024-04-25
编程技术问答社区
适用于64位操作系统的C#?
如何使我的汇编为Windows 64位优化? 解决方案 根据所选的体系结构=>在AMD64上创建的默认C#项目将自动构建一个托管项目,将在x86上为AMD64,x86.默认情况下,本机始终是32位. 明确设置一个平台: 1打开解决方案资源管理器,选择解决方案,右键单击 - >配置管理器. 2转到"主动解决方案平台",单击"新建". 3在"新解决方案平台"对话框中选择"新平台" Say Itanium.将"复制设置"设置为" cpu",该设置是"活动解决方案平台"中的默认设置. 4单击"确定". 这是从其他解决方案 您可能还想在运行时进行检查,请确保: using System; using System.Runtime.InteropServices; class SystemChecker { static bool Is64Bit { get { return Marshal.SizeOf(type
10 2024-04-23
编程技术问答社区
无法手动或自动将ILNumerics控件添加到VS2012工具箱中
我试图按照 http://ilnumerics.net/可视化-Api-Quick-Start Guide.html 使Ilnumerics起作用.到目前为止,我无法在工具箱上控制ilnumerics. 我尝试了Nuget的所有三个单独的软件包 1)ilnumerics(anycpu) 2)ilnumerics.32bit 3)ilnumerics.64bit 这些软件包的确已加载到我的.csproj,但是Ilnumerics控件未在工具箱中列出.所以我试图手动添加它们.我右键单击我的工具框,然后选择"选择项目".这将我带到.NET Framework组件选项卡,在这里我选择"浏览"按钮并尝试加载DLL.我会在三种情况下得到以下错误 1)iLnumerics.dll:iLnumerics.dll中没有组件可以放在工具箱中. 2)ilnumerics.32.dll:ilnumerics32.dll中没有组件可以放在工具箱中. 3)iLnumerics.64.dll:
10 2024-04-23
编程技术问答社区
在form_load中忽略了x64的异常情况
当我在我的C#应用​​中抛出form_load的异常时,平台为x64时,它不起作用. (它按照x86的预期) 当我逐步浏览代码时,我到达了抛出的例外的线,然后立即跳到timer_tick. 创建一个新项目并将此行添加到Form_load: 抛出新的system.exception(" oops!"); 对于x86,它按预期崩溃.对于x64,它不会崩溃. 是否有某种方法可以获取64位上的form_load的申请? 解决方案 没关系.看起来这落入了已知错误的黑洞...
18 2024-04-23
编程技术问答社区
在C#中的.NET 2.0框架中检查是否为64位操作系统,如果是,请这样做?如果不是,请这样做?更好的答案?
嗨,我有一个我写的小代码段,z只是代码的标记),但我想知道的是,只有2.0 .NET框架? string target = @"C:\Windows\SysWow64"; { if (Directory.Exists(target)) { //do x64 stuff } else { //do x86 stuff } 解决方案 您可以使用反射器来查看FW 4.0中的实现方式: [DllImport("kernel32.dll", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)] private static extern IntPtr GetProcAddress(IntPtr
6 2024-04-23
编程技术问答社区
如何使COM ActiveX对象在IE 64位中工作?
我使用嵌入了ASP.NET页面中的COM对象.它在IE 32位中起作用,但在IE 64位中不起作用 - 无法访问其功能.没有错误消息,没有我可以获取一些信息的事件日志. DLL在C#中,包括COM可见类,为任何CPU编译(尽管我也尝试过X86),并在客户安装期间通过执行regasm进行了注册.这创建了注册表键,除了IE 64外,一切都很好,我搜索了有关该问题或至少一些指南的Internet,但什么也没找到. 我在另一个论坛上收到了一个答案,有关_merge_proxystub(我想这是预处理程序的定义?)和ProxyStubClsID32注册表密钥,但不是很详细.好吧,我再次搜索,找不到太多并进行了实验:使用_merge_proxystub定义,创建的proxystubclsid32键,但没有结果. 至少可以看什么解决方案或要点?也许至少有一种方法可以获取有关为什么IE 64无法访问的日志? 解决方案
12 2024-04-23
编程技术问答社区
MoveFileEx工作不正常?
我已经尝试了几种方法来获得 movefileex 使用delay_until_reboot标志而没有成功.注册表中的fileRenameAperations密钥还表明该方法无法正常执行.原因是什么? 我称我的MoveFileex函数这样: MoveFileEx(localFile, oldFile, MoveFileFlags.MOVEFILE_DELAY_UNTIL_REBOOT); 我的Winapi代码如下: [DllImport("kernel32.dll", EntryPoint = "MoveFileEx")] internal static extern bool MoveFileEx(string lpExistingFileName, string lpNewFileName, MoveFileFlags dwFlags); internal enum MoveFileFlags { MOVEFILE_REPLACE_EXISTING =
10 2024-04-22
编程技术问答社区
CLR检测到一个带有Entity Framework的无效程序
我正在从WordPress数据库中检索数据,该数据库将主键定义为decimal,并且我正在使用项目上的X64配置... 我搜索的一点我发现这是问题所在,但找不到解决方案. 我必须做什么/下载才能将decimal用作主要键? 解决方案 如果您仅从表中读取数据,则可以尝试创建一个将字段投放到INT的视图,然后将您的实体映射到视图. 除此之外,我认为您几乎是不幸的.这是实体框架中的错误;更改字段类型,请远离EF,或等待MS修复错误. 其他解决方案 我也有相同的问题,我今天通过将这两个选项放在dbcontext对象中解决了: : this.ContextOptions.LazyLoadingEnabled = false; this.ContextOptions.ProxyCreationEnabled = false; 这似乎是代理创建的序列化问题. 我首先尝试将我的类型映射到EDMX文件中的INT32,但这给了我非常低的性能. 其他
6 2024-04-22
编程技术问答社区
如何在64位操作系统中注册ActiveX组件(.dll)?
i使用用户控制和注册为COM组件创建ActiveX Control(.dll).它在32位OS中正常工作.但是,当在64位OS中注册相同的ActiveX控件(Window Server 2008)时,它会在异常 下抛出 Could not load file or assembly 'file :////C:\Program Files\STPL\GlobActiveX.dll' or one of its dependencies. an attempt was made to load a program with an incorrect format. 我使用以下代码注册DLL组件 filepath=C:\Program Files \STPL\GlobActiveX.dll Assembly asm = Assembly.LoadFrom(filePath); RegistrationServices regAsm
4 2024-04-22
编程技术问答社区
NGEN x86 vs x64与.NET的可执行文件
我有以下问题: 我的.NET组件以X86模式编译.我仍然可以利用NGEN在X64 Windows系统上的性能优势吗? X86组件会在x64上编译为本机代码吗? 解决方案 用X86编译的汇编将在64位系统上运行I WOW64,但是与AnyCPU复制的组件将在本地运行,无论NGEN如何.为X86编译的组件可以在64位系统上加载32位组件,并为AnyCPU编译的代码不会加载32位DLL. 当您使用NGEN时,您将避免在X64 Systems上使用X86编译时,将避免对组件进行调整.
4 2024-04-22
编程技术问答社区
64位P/Invoke Idiosyncrasy
我试图适当地将某些结构用于P/Indoke,但是在64位OS上测试时发现了奇怪的行为. 我的结构定义为: /// http://msdn.microsoft.com/en-us/library/aa366870(v=VS.85).aspx [StructLayout(LayoutKind.Sequential)] private struct MIB_IPNETTABLE { [MarshalAs(UnmanagedType.U4)] public UInt32 dwNumEntries; public IntPtr table; //MIB_IPNETROW[] } 现在,要获取表的地址,我想做一个元帅. IntPtr offset = Marshal.OffsetOf(typeof(MIB_IPNETTABLE), "table"); 这应该是4-我已经倾倒了缓冲区的字节以确认这一点,并用我的指针算术
16 2024-04-22
编程技术问答社区
VisualStudio C# x64,为什么AddReference选项,.NET标签指向x86 DLL而不是x64?
我想创建X64应用程序. 当我想在选项卡下的窗口addReference中添加一个引用时,我只看到x86 dll,我需要64位版本. 我有我创建了一个项目,然后在配置管理器下设置x64. 我该怎么做才能迫使视觉工作室指向 更正dll(而不是C:\WINDOWS\Microsoft.NET\Framework64而不是 C:\WINDOWS\Microsoft.NET\Framework)? 解决方案 遇到了同一问题,是的,我也认为这是MS的错误.您可能会认为x64或x86 sgen.exe可以处理MSIL组件,尤其是当您必须参考框架组件时. 我更喜欢自己建造MSIL组件,但要把一个本地建造的第三方组装扔进我的混合物中.当项目尝试使用x86 sgen.exe生成序列化组件时,它抱怨第三方组件是"错误的格式". 当我使用x64 sgen.exe时,它抱怨system.data是"错误的格式".但是我没有指向.csproj文件中的framework64版本
12 2024-04-22
编程技术问答社区