代码之家  ›  专栏  ›  技术社区  ›  Mikko Rantanen

互操作程序集指针长度

  •  0
  • Mikko Rantanen  · 技术社区  · 16 年前

    为什么VisualStudio有时会将COM库中的相同指针参数转换为 uint 有时甚至 ulong

    [ in ] ULONG_PTR ParentWindow
    

    当我在桌面计算机上引用此库时,互操作程序集将 ULONG_PTR 无符号整型 . 当我在我的笔记本电脑上做同样的事情时,它会变成 无符号长整型

    这些系统包括:

    Desktop                                Laptop
    - Windows Vista Professional 64-bit    - Windows 7 Ultimate 64-bit
    - Visual Studio 2008 Professional      - Visual Studio 2008 Team System
      (SP1)                                  Development Edition (SP1)
    - .Net Framework 3.5 SP1               - .Net Framework 3.5 SP1
    

    UAC已启用,Visual Studio以管理员身份运行。

    编辑:在笔记本电脑上应用SP1,没有效果。

    更新:

    为什么会这样?两台计算机上的Devenv进程都在WoW64下运行。

    运行程序时,它根据进程监视器在两台计算机上使用COMLibrary64.dll。因此,问题似乎只是在参考添加期间。

    下一步将尝试手动生成互操作。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Barry Kelly    16 年前

    它肯定是同一个COM服务器,而不是32位和64位版本吗?您描述的内容具有针对不同位的所有特征,您可能知道-ULONG_PTR在32位编译目标中为32位,在64位编译目标中为64位,但本机代码在编译时必须是其中之一。

    UIntPtr ,但这取决于.NET客户端进程正在运行的框架,而不是所需的COM服务器位。