Tag: 64bit

VisualStudio C#x64,为什么AddReference选项,.NET选项卡指向x86 DLL而不是x64?

我想创建一个x64应用程序。 当我想在选项卡.NET下的窗口AddReference中向system.data添加引用时,我只看到x86 DLL,我需要64位版本。 我有Visual Studio 2008的Windows Server 2008 x64。 我创建了一个项目,并在Configuration Manager下设置了x64。 我该怎么做才能强制Visual Studio指向正确的DLL(从C:\WINDOWS\Microsoft.NET\Framework64而不是C:\WINDOWS\Microsoft.NET\Framework )?

运行时C#知道是否正在使用32位或64位版本的COM接口

我想构建一个DLL类库,使用COM Interop,使用C#,目标ANY CPU,并将其注册为32位和64位接口。 我希望能够在运行时显示使用的接口 – 如果我使用的是32位版本或64位版本。 有任何想法吗?

是否有跨平台(x86和x64)PInvoke和Windows数据类型的权威指南?

我正在validationx64兼容性的一些代码。 以前我使用过PInvoke.net,但是我发现了x64方面的一些可疑声明。 所以现在,我: 查找API参考,例如MapViewOfFile 查找Windows数据类型定义 找到相应的.NET类型。 这是第3步,我想要一个明确的参考 举个例子: LPVOID WINAPI MapViewOfFile( __in HANDLE hFileMappingObject, __in DWORD dwDesiredAccess, __in DWORD dwFileOffsetHigh, __in DWORD dwFileOffsetLow, __in SIZE_T dwNumberOfBytesToMap ); 返回值为LPVOID,定义为: LPVOID 指向任何类型的指针。 此类型在WinDef.h中声明如下: typedef void *LPVOID; 好的…所以我猜那是IntPtr或UIntPtr 。 本文有一个表,建议LPVOID应映射到IntPtr或UIntPtr。 好。 接下来,HANDLE。 处理 对象的句柄。 此类型在WinNT.h中声明如下: typedef PVOID HANDLE; 好的,HANDLE是一个PVOID。 PVOID 指向任何类型的指针。 此类型在WinNT.h中声明如下: typedef void * PVOID; 嗯,听起来像IntPtr 接下来,DWORD […]

在x64中从C#调用c ++代码,所有参数都移一

我的c ++ dll: int test2::CallMe(int y) { return y; } c#代码: [DllImport(“test2.dll”,CharSet = CharSet.Anci)] private static extern int CallMe(int y); Console.WriteLine(CallMe(7)); 如果dll和测试程序是在x86中编译的,我得到一个print:7但是如果我在X64上编译它们用于c ++和X64或任何CPU用于c#,则打印为:0 有什么建议吗? 编辑:问题是调用,因为在调试器中我看到CPP收到0,或者在struct的情况下为null。 编辑2:使用def文件导出函数。 如果我使用extern“C”导出函数它工作正常,但我不能导出calss的function,或者我不知道如何 编辑3:显然参数实际上不是零,只有最后一个参数为零,所有参数都被移位,第二个参数设置为第一个参数,依此类推

.NET Windows窗体应用程序是否可以在64位操作系统中运行,还是需要进行修改?

一般来说,.NET Windows Forms应用程序是否可以在64位操作系统中运行,还是需要进行修改?

Mono是否支持64位Windows?

在此页面上, http://www.mono-project.com/Supported_Platforms,64位窗口未列为受支持的平台。 但是,我一直觉得它受支持(x64代码生成器工作……)。 任何人都可以最终证实这一理论吗? 谢谢

如何在C#中使用Int64

问题很简单! 你如何在C#中表示64位int?

Visual Studio:如何正确构建和指定x64和x86的配置和平台

使用:Visual Studio 2012 Professional和Ultimate以及所有最新更新 如何正确指定配置和平台以正确构建x86和x64。 Visual Studio,当您第一次创建Winforms应用程序时,会为您提供两个配置,Debug和Release,AnyCPU定义为平台。 如果您只针对一个平台,那么答案很简单,您可以转到Build | 配置管理器并选择其中一个平台,然后转到项目属性的构建页面并选择相同的平台(x86或x64)并瞧! 你结束了(说你想要x86) /bin/x86/Debug /bin/x86/Release 我有一个应用程序和多个依赖项目(DLL程序集)的解决方案。 由于VS Configuration Manager顶部有两个下拉列表,配置和平台,然后在项目级别有另一个配置和平台,我执行了以下操作: (在进一步打字之前,我认为整个设置很糟糕,但……) 我使用最顶层的下拉列表和为平台选择的混合平台创建了两个新配置Debug64和Release64。 我依次选择了四种主要解决方案配置中的每一种,然后将项目级别配置和项目级别平台设置为匹配,因此: Debug64 === Debug64, x64 Release64 === Release64, x64 Debug === Debug, x86 Release === Release, x86 然后我进入项目属性(Alt + Enter)构建页面,忽略平台并依次选择每个配置,然后设置目标处理器以匹配。 我将输出更改为以下内容: Debug64: /bin/x64/Debug Release64: /bin/x64/Release Debug: /bin/x86/Debug Release: /bin/x86/Release 默认情况下,Visual Studio使用顶级平台设置文件夹和配置名称以设置输出的最后部分。 如果我保存并关闭项目属性,那么一切似乎都很好。 我可以构建,并使用适当的文件夹。 当我在Visual Studio工具栏上切换解决方案配置时,问题就来了。 项目属性构建页面默认恢复到它想要的状态,即比如/ […]

内联汇编代码以获取CPU ID

我在这里找到了一段很好的代码,它使用API​​调用执行ASM指令,以获取CPU的序列号: using System; using System.Text; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { [DllImport(“user32”, EntryPoint = “CallWindowProcW”, CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)] private static extern IntPtr ExecuteNativeCode([In] byte[] bytes, IntPtr hWnd, int msg, [In, Out] byte[] wParam, IntPtr lParam); [return: MarshalAs(UnmanagedType.Bool)] [DllImport(“kernel32”, CharSet = CharSet.Unicode, SetLastError = true)] public static extern […]

如何分发32位和64位版本的库

我有一个C#库,由各种客户端(32位和64位)调用。 到目前为止它被编译为AnyCPU,所以没有问题。 最近我添加了对SQLite .NET库的依赖,它有32位和64位版本(但不是AnyCPU)。 所以,现在,我必须有两个版本 – 两个比特。 在过去,我已经看到了其他库(MS SQL Compact想到),其中有一个方案,其中单个.NET程序集将在文件夹中具有Private\amd64和Private\x86文件夹,并且其中包含相应的本机库会根据需要打电话给每个人。 这种方法对我的情况是否可行? 是否有关于如何实施它的文档? 是否需要更改代码或这是一种分发技术?