C++ cli __ptr32至引脚_ptr给出x64配置上的编译错误

C++ cli __ptr32至引脚_ptr给出x64配置上的编译错误,c++-cli,32bit-64bit,C++ Cli,32bit 64bit,我正在c++/CLI中包装一个dll(c++)方法。我使用的是带有Vc++2010的x86 windows xp机器 我的c++/CLI项目中既有x86配置,也有x64配置 我只在x64中得到一个编译错误。下面是代码片段 struct A { int data; A *__ptr32 next; } pin_ptr<A *>pinned = &obj->next; // A obj 结构A { int数据; A*uu ptr32下一步; } pin_

我正在c++/CLI中包装一个dll(c++)方法。我使用的是带有Vc++2010的x86 windows xp机器

我的c++/CLI项目中既有x86配置,也有x64配置

我只在x64中得到一个编译错误。下面是代码片段

struct A
{
    int data;
    A *__ptr32 next;
}

pin_ptr<A *>pinned = &obj->next; // A obj
结构A { int数据; A*uu ptr32下一步; } pin_ptrpinned=&obj->next;//obj 以上行仅在x86配置中编译。 在x64中,我收到一个编译错误:
无法将*转换为pin_ptr


编译器选项:/clr

\uu pt32将指针约束为仅在x86上工作的32位指针

x64与64位指针配合使用

只需删除大小约束,并将其用作常规指针:

 struct A
  {
   int data;
   A* next;
  }

为什么在64位平台上使用32位指针?这段代码有很多地方没有意义。首先固定显然不是托管对象引用的对象。所以先把它去掉,然后开始考虑如何将A*更新为_uptr64。我有一个dll,其中A的定义如前所述。所以我需要重建那个dll。这是唯一的方法吗?x64体系结构使用64位指针。32位指针无效,因为它可能被传递了一个不适合32位的内存地址。。。