Tag: 64bit

BigInteger.ModPow()的替代品; 在C#中

我正在寻找.NET 4.x引入的C#BigInteger包的替代品。 使用这个对象的数学运算速度非常慢,我想这是因为算术是在比原始类型更高的层次上完成的 – 或者是非常优化的,无论如何。 Int64 / long / ulong或其他64位数字是小的,不会正确计算 – 我说的是64位整数到64位整数的幂。 希望有人可以建议我的东西。 提前致谢。

C#:根据平台访问32位/ 64位DLL

我们使用来自C#应用程序的自编写32位C ++ DLL。 现在我们注意到当C#应用程序在64位系统上运行时,会自动使用64位运行时,当然也无法从64位运行时访问32位DLL。 我的问题是:有没有办法使用32位DLL? 如果没有,如果我创建了64位版本的DLL,是否可以轻松地让应用程序选择哪一个进行P / Invoke? 我想在C#中创建两个辅助类:一个从32位DLL导入函数,一个从64位DLL导入,然后创建一个包装类,每个导入的函数都有一个函数调用32位导入器或者64位导入程序取决于操作系统的“bittyness”。 那会有用吗? 或者还有另一种简单的方法吗?

如何在运行时后期绑定32位/ 64位lib

我遇到的问题与此处描述的类似,但略有不同(加载程序集及其依赖项)。 我有一个用于3D渲染的C ++ DLL,这是我们向客户销售的产品。 对于.NET用户,我们将有一个CLR包装器。 C ++ DLL可以在32位和64位版本中构建,但我认为这意味着我们需要有两个CLR包装器,因为CLR绑定到特定的DLL? 现在说我们的客户有一个可以是32位或64位的.NET应用程序,并且它是一个纯粹的.NET应用程序,它让CLR从一组程序集中解决它。 问题是应用程序代码如何在运行时动态选择我们的32位和64位CLR / DLL组合? 更具体地说,这里适用的上述问题的建议答案也是如此(即创建一个ResolveEvent处理程序)?

如何在C#Express中选择32位或64位构建?

当我尝试在C#Express 2008中构建我的解决方案时,我遇到了问题。我需要为32位架构构建它,但它始终构建为64位。 在Visual Studio 2008中,我可以选择体系结构,但在C#Express中找不到此选项。 有没有办法在C#Express中执行此操作?

你如何创建一个随机的64位数字?

我有一个规范的一部分,要求我创建一个随机的64位数字,并将以下转换为字符串:(0到2 ^ 63 – 1) 我不知道这在括号中是什么意思,任何人都可以帮忙吗?

依赖于C ++ / CLI的任何CPU依赖于本机C dll(c ++ / cli的任何cpu)

这是我的问题。 我在C#中包装一个C dll。 为此,我首先编写了一个C ++ / CLI包装器。 本机C库链接到C ++ / CLI包装器。 (C ++ / cli项目中的链接器属性)。 以下是它现在的组织方式: – 原生C .lib:x86和64bit。 1解决方案包含2个项目: 与本机C .lib链接的C ++ / CLI包装器项目 C#项目引用C ++ / CLI项目 我的问题来自于我需要C#来定位“任何CPU”。 但是此选项在C ++ / CLI中不可用,因为它直接编译为本机代码。 我解决这个问题的想法是: – 在x86中编译C ++ / CLI包装器,然后更改配置并编译为64位。 当它编译时,我想告诉它基于平台采取哪个dll。 即:如果在64位编译,链接64位本机C dll,否则如果x86,链接x86本机C. – 完成后,我应该能够在我的C#平台中拥有任何CPU目标。 在这里,我将不再引用我的C ++ / CLI包装器项目,而是基于目标平台引用所需的dll。 我的问题是: 如何告诉C ++ / CLI项目基于目标平台链接到哪个.lib? 如何告诉C#项目基于目标平台引用哪个C […]

在C#中调用Javascript函数以获得64位项目

我试图从C#代码中调用Javascript函数“eval”(将字符串用于运算符解析器)。 我使用了以下代码: https : //stackoverflow.com/a/12431435/712700 它崩溃但有以下消息—: exception详细信息: System.Runtime.InteropServices.COMException:由于以下错误,检索具有CLSID {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC}的组件的COM类工厂失败:80040154未注册类(HRESULTexception:0x80040154(REGDB_E_CLASSNOTREG) ))。 我认为问题是因为项目/机器是64位。 我不想将项目更改为32位,是否有另一个CLSID我可以使用它来使其与64位一起工作? 或者是否有另一种方法可以简单地在C#代码中使用Javascript中的“eval”函数?

无注册在64位COM dll和C#/ .Net应用程序之间互操作

我试图在64位COM DLL和C#应用程序之间获得免注册COM互操作。 在我之前的一个问题的答案中 ,我得到了帮助,这使我能够在C#的64位COM dll上成功调用HelloWorld方法。 但是,这只能通过使用regsrv32.exe全局注册COM dll来实现。 基于对相关问题的这个答案 ,我认为我需要将COM dll的引用上的Isolated标志设置为true。 但是,这会导致以下构建错误: Problem isolating COM reference ‘ComLibInteropLib’: No registered classes were detected for this component. 关于MSDN社交问题的答案似乎表明,如果可以编译32位版本的dll,就可以解决这个问题。 但是,我的COM互操作库需要链接到一个“普通”的C ++ dll,我没有源代码,只能用于x64。 所以我的问题是:如何在64位COM dll和C#应用程序之间启用Isolated标志(或以其他方式并行工作)? 我很高兴在我的机器或其他开发人员的机器上使用regsrv32.exe,但我们无法在最终应用程序必须运行的生产机器上注册任何COM dll。

C#将注册表添加到LocalMachine的键失败

我正在尝试在注册表中添加一个键到LocalMachine 。 我正在使用此代码: System.Diagnostics.Debugger.Launch(); RegistryKey key = Registry.LocalMachine.OpenSubKey(“SOFTWARE”, true); RegistryKey newkey = key.CreateSubKey(“1asdasds”, RegistryKeyPermissionCheck.ReadWriteSubTree); newkey.SetValue(“ads”, “ddsds”); newkey.Close(); 我在管理员帐户上运行它。 我用“以管理员身份运行”运行它,但没有添加到注册表:(。当我将LocalMachine更改为CurrentUser ,实际上它被添加到CurrentUser键。但是如何强制将它添加到LocalMachine?

Microsoft.ACE.OLEDB.12.0提供程序未注册

我的应用程序是用C#编写的,并使用Ms-Access 2003 ,我希望它能在64-bit Windows安装中正常运行。 我使用数据提供程序作为ACE.OLEDB.12. 连接字符串中为0,但它仍然提供了Microsoft.ACE.OLEDB.12.0提供程序未注册的例外,尽管我已在目标计算机中安装了Microsoft Access Databse Engine 2010 ( 32-bit )(作为目标计算机的Office安装是32-bit )。 我跟随以下postMicrosoft.ACE.OLEDB.12.0提供程序未注册 , msdn和其他microsoft站点中的许多其他post和问题解决,因为他们说编译到x86 。 我想知道是否有另一种解决这个问题的方法,不需要编译到x86 …