Tag: 32bit 64bit

Xamarin.iOS ARKit演示项目出错:“当部署目标为11或更高版本时,不支持32位体系结构”

从https://developer.xamarin.com/samples/monotouch/ios11/ARKitSample/部署ARKit示例项目时,我得到构建错误Invalid architecture: ARMv7. 32-bit architectures are not supported when deployment target is 11 or later Invalid architecture: ARMv7. 32-bit architectures are not supported when deployment target is 11 or later 。 使用部署设备和我的开发机器的所有内容都会检查: 我在部署设备上运行iOS 11(iPhone 6S Plus – ARKit将无法在模拟器中运行),并安装了Xcode 9(并在启动Visual Studio for Mac之前启动了一次)。 Visual Studio for Mac也已更新到最新的Stable版本(此时Alpha版和Beta版本尚未提供ARKit)。 我正在发布下面这个问题的修复程序,希望能帮助其他人在iOS 11上使用ARKit进行开发。

urlmon.dll FindMimeFromData()在64位桌面/控制台上运行良好,但在ASP.NET上生成错误

我正在创建一个实用程序库,以便在Web环境中的桌面环境中使用。 它包含我认为在我的应用程序中经常重复的几个function,包括通过其内容(而不是扩展名)获取文件的mime类型的实用程序。 我必须检查的文件是最常见的(jpg,png,pdf,txt)所以我选择使用外部方法FindMimeFromData (上面的链接) 使用.NET,如何根据文件签名而不是扩展名找到文件的mime类型 该方法效果很好,除了两个不正确的mime类型的JPG( image/pjpg )和PNG( image/x-png )之外,通过在return语句之前进行检查很容易解决。 该库是为平台AnyCPU编译的,因为它必须以32位和64位安装在服务器/客户端上。 在桌面环境测试时,所有为x86和x64编译的应用程序都正常工作。 在测试ASP.NET应用程序(带有用于测试的http处理程序的空站点)时发生HRESULT类型的错误,调试器告诉我它无法提供进一步的信息。 经过一些测试配置,包括将池的身份更改为本地系统(没有结果),我已经确定了问题: 池应该允许32位应用程序(见上图)。 为什么? 它不应该加载我们现在的64位系统的dll urlmon.dll ? 这是一个很大的问题,因为FindMimeFromData方法可以被任何地方调用到这个库中: 结果是,另一个实用程序方法调用此方法可能会抛出此exception,并且通过调试也很难跟踪问题。 任何想法/经验? 用于测试的操作系统 桌面: Windows 8 x64 – 有效 Windows 7 x64 – 有效 Windows Server 2008 Standard R2 x64 – 有效 Windows Server 2008 Standard x86 – 有效 Windows Server 2003 Standard x86 – […]

32位dll导入64位.Net应用程序

我遇到了问题,我从昨天开始尝试解决它,但没有运气。 我有32位delphi dll,我想在.NET Win应用程序中导入。 此应用程序必须基于任何CPU模式构建。 当然,还有BadImageFormatException即将到来,这意味着在x64应用程序中无法加载x86 dll ..我用Google搜索并找到解决方案,它说我必须做包装,但对我来说还不清楚。 任何人都可以告诉如何解决这个问题,有没有可能的方法我可以在程序建立任何CPU或x64模式(可能是另一种解决方案)中导入32位Delphi dll。

64位.NET应用程序中的32位ActiveX控件

我正在创建一个C#.Net应用程序,我想能够为“所有CPU”编译。 我还想在这个应用程序的UI中包含一个特定的ActiveX控件,但我试图使用的ActiveX控件不支持32位。 是否有一些技巧或解决方法我可以使用这个控件来工作? 如何在Web浏览器控件中嵌入ActiveX控件呢? 这会工作吗?

我应该在固定类型大小的langs中使用’long’代替’int’而不是’int’(如Java,C#)

在10年甚至5年内,将没有[ Edit2:服务器或桌面] 32位CPU。 那么,使用int (32bit)over long (64bit)有什么好处吗? 使用int有什么缺点吗? 编辑: 到了10 or 5 years我的意思是绝大多数使用这些lang的地方 我的意思是默认使用哪种类型。 这一天我甚至都懒得去想是否应该使用short作为周期计数器,只是for(int i…同样long计数器已经赢了 寄存器已经是64位,32位类型已经没有增益。 我认为8位类型有一些损失(你必须使用更多的位然后你正在使用)

在64位计算机上以32位模式运行Oracle客户端

我刚刚从32位Windows 7桌面迁移到64位Windows 7笔记本电脑。 我们正在开发一个包含解决方案中大约60个项目的C#程序。 我在尝试构建时遇到以下错误: Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed 显然错误是非常自我解释的,我试图让我的整个解决方案以32位模式加载。 我已经完成了每个项目并将目标平台设置为x86,但我仍然遇到此错误。 我搜索过Google并看到了无数不同的方法,但我似乎无法解决这个问题。 确保我的项目在64位计算机上以32位模式运行的最佳方法是什么? 我正在使用Visual Studio 2008.我目前正在考虑降级到32位,但我真的想避免这样做。

如何从C#项目的构建事件访问Visual Studio解决方案级平台?

我们有一个大型的VS 2010解决方案,主要是C#代码,但有一些本地DLL,各种C#项目依赖(包括我们的unit testingDLL)。 我们正在尝试支持32位和64位版本的库。 所以我们现在将本机DLL构建为32位和64位。 问题是我们的很多C#项目都有后期构建事件,它们将所需的本机DLL复制到项目的TargetDir中。 现在我们有两个不同版本的本机DLL(32位和64位),我需要能够指定正确的dir来复制本机DLL。 我原本以为我可以简单地在路径中使用$(Platform),如下所示: copy $(SolutionDir)\NativeDll\$(Platform)\$(Configuration) $(TargetDir) 但这不起作用,因为$(Platform)是项目的平台,而不是解决方案级平台。 在这种情况下,$(平台)是“任何CPU”。 从我看到的C#项目中的后期构建事件宏看,似乎没有办法访问正在构建的解决方案级平台。 有没有更好的方法来实现我的目标?

如何在C#WinForms中使用Windows屏幕键盘

VS 2010 开发在64位操作系统上运行的32位应用程序(Win7,Win8 – 桌面应用程序) C# .NET 4.0 的WinForms 我从应用程序启动Windows屏幕键盘(osk.exe)时发现了许multithreading,但遇到了一些问题。 这似乎是因为我在64位操作系统上运行32位应用程序。 我已经尝试过WooCaSh发布的代码: WinForms屏幕上的键盘 但这三种不同的路径都不适合我。 对于“sysnative”路径,Process.Start“找不到指定的路径”。 对于system32和osk.exe路径,我得到“无法启动屏幕键盘”错误对话框。 我在这里找到了一个可能的解决方法,这比我想要的更复杂一点(由eryang发布): http ://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/10ebc62f-e6d7 -4072-9fd1-ea3784a0966f / 有没有更简单或正确的方法来做到这一点? 我希望在平板电脑上运行我的应用程序会在用户选择文本框时自动启动屏幕键盘,但没有运气。 这是正常还是我错过了什么? 编辑 :发现在桌面模式(我的应用程序是)时,键盘不会在Win8中自动启动: http : //www.bleepingcomputer.com/forums/t/480250/keyboard-does-not-pop-up-automatically /显然它适用于Win7平板电脑,但我无法测试,因为我这里只有Win8平板电脑。

在32位和64位C#世界中使用System.Data.SQLite的选项

我理解为什么在32位和64位版本中提供System.Data.SQLite.dll。 所以我们不要再纠缠于此并继续前进。 🙂 由于它以这种方式完成,它似乎使得纯粹的C#开发更难以做出3个选择。 是仅支持32位并强制使用托管程序集来编译x86并在32或64位运行时处理它,并且当你在64位环境中时会失去优势。 是强制64位并且仅支持64位并且失去了在32位上运行的能力但是获得了64位的所有优点。 是创建两个版本的程序集,一个编译x86并使用32位SQLite,另一个编译x64并使用64位SQLite。 它阻止使用“ANY”作为编译选项,并且能够轻松地将单个构建部署到任一类型。 从发展的角度来管理并不是那么可怕,因为我们需要两个项目。 只将C#代码正式放在一个,而另一个只使用“链接”到另一个代码。 这仅用于编译目的。 仍然让我们必须管理两个输出以进行部署。 尽管如此,我只是在寻找确认以上是唯一正确的选择。 但是,如果我有其他选择,请告诉我。 具体来说,如果有一种方法可以获得一个可以编译为ANY的C#DLL,那么它可以利用32位或64位,具体取决于它的运行位置,仍然使用System.Data.SQLite.dll。