【问题标题】:What is the difference between the x64 and x86 library files in DirectX?DirectX 中的 x64 和 x86 库文件有什么区别?
【发布时间】:2010-02-06 23:29:13
【问题描述】:

我最近在一台新计算机上安装了 Visual Studio,为了在其上设置 DirectX,我转到了工具>选项>项目和解决方案>VC++ 目录并在库文件下创建了一个新条目C:\Program Files\Microsoft DirectX SDK (August 2009)\Lib\x86

现在运行了一个测试程序(基本上只是初始化了 DirectX),它运行良好。但是,如果我将 ...\Lib\x86 更改为 ...\Lib\x64,则会收到一个链接器错误,即 Direct3DCreate9 未定义:

1>main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function "void __cdecl init(void)" (?init@@YAXXZ)

【问题讨论】:

    标签: directx installation x86-64


    【解决方案1】:

    x86 库适用于 32 位应用程序,x64 库适用于 64 位应用程序。

    您可以在 Visual Studio 的配置管理器中查看您的目标平台。除非您有充分的理由,否则您应该编写 32 位应用程序,因为 64 位应用程序需要 64 位版本的 Windows 才能运行。

    【讨论】:

      【解决方案2】:

      x64 文件夹包含 AMD64 平台(Windows 64 位)的库文件。您还需要为 64 位编译应用程序。此外,您需要 64 位版本的 Windows 才能运行生成的可执行文件。

      【讨论】:

        【解决方案3】:

        答案很简单,x86 库适用于 32 位操作系统,而 x64 库适用于 64 位操作系统。

        只需更改链接到的 DirectX 库就会产生错误,因为您(很可能)试图将 32 位代码链接到 64 位库。您需要将代码编译到 64 位操作系统才能成功链接。

        【讨论】:

        • 运行的系统无关紧要。在 32 位系统上,您仍然可以将 Visual C++ 交叉编译器用于 64 位,生成链接到 64 位库的 64 位应用程序。但是,您将无法在您的计算机上测试该应用程序。哎呀,我可以从 Linux 编译 32 位(以及最近的 64 位)Windows 应用程序。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-07
        • 2010-10-29
        • 2020-08-19
        • 1970-01-01
        • 2011-11-29
        • 2011-09-16
        相关资源
        最近更新 更多