C# 让导入的.h在x86和x64中工作
我有一个外部生成的.h文件,其中包括我需要在C#代码中引用的枚举和字符串 为了“解决”这个问题,我创建了一个C++/CLI项目,将信息封装在一个可以从C#访问的类中。这对我来说很好(运行Windows7-32位) 一切都进行得很顺利,直到有人试图在x64上运行它,他遇到了一个异常 在external.h中有一行阻止我生成/clr:safe:C# 让导入的.h在x86和x64中工作,c#,c++,C#,C++,我有一个外部生成的.h文件,其中包括我需要在C#代码中引用的枚举和字符串 为了“解决”这个问题,我创建了一个C++/CLI项目,将信息封装在一个可以从C#访问的类中。这对我来说很好(运行Windows7-32位) 一切都进行得很顺利,直到有人试图在x64上运行它,他遇到了一个异常 在external.h中有一行阻止我生成/clr:safe: static const char* const NiFpga_M_OTRM_OVDFPGA_Signature = "C2BF591011B5C7046A
static const char* const NiFpga_M_OTRM_OVDFPGA_Signature = "C2BF591011B5C7046AB3528D7EFEFC72";
如果只是这样,一切都会好起来:
#define NiFpga_M_OTRM_OVDFPGA_Signature = "C2BF591011B5C7046AB3528D7EFEFC72";
阿格!
该应用程序需要在64位和32位Windows 7上构建和运行
任何建议(允许我保留.h文件不变)。32位程序在Windows 64位上使用WoW64运行良好。您真的需要构建64位版本吗?这是一个实时应用程序,我们关心的是将其限制为仅32位。我们希望为将来迁移到x64做好准备。大多数代码构建为“任意CPU”,在任何一种平台上都可以正常运行。它只是需要使用C++/CLI导入.h文件中的地址映射信息,这会设置限制。您真正需要的已经在这里得到了回答:这里:我知道我可以创建单独的32和64个项目构建,然后根据平台动态加载正确的项目构建。我希望有人有一个创造性的方法来处理字符串,因为这是我唯一的问题。我正在考虑一个预编译步骤来修改.h文件;但是,这似乎有点“创造性”。