【问题标题】:how to build 64 bit managed c++ dll in visual studio 2010?如何在 Visual Studio 2010 中构建 64 位托管 c++ dll?
【发布时间】:2012-01-29 11:49:03
【问题描述】:

我有一个托管的 c++ dll,它以 x86 格式构建得很好。但是,当我在配置管理器中将格式更改为 x64 时,它无法识别 .Net 命名空间,例如 System 等。

为了能够构建 64 位版本的应用,我还应该进行哪些更改?

我需要能够为 x64 和 x86 构建应用程序。

【问题讨论】:

    标签: c++ .net visual-studio-2010 64-bit managed-c++


    【解决方案1】:

    当您将项目更改为以 x64 为目标时,告诉编译器以 .NET Framework 为目标的设置显然没有被转移。

    检查项目的属性,确保所有 x64 设置都与 x86 设置匹配。

    更具体地说,您正在寻找“公共语言运行时支持”属性。在最新版本的 Visual Studio 中,对于托管 C++,这可能应该设置为 Common Language Runtime Support, Old Syntax (/clr:oldSyntax)

      

    【讨论】:

    • 是的,clr 已禁用,请将其设置为公共语言运行时支持 (/clr)。现在我收到以下链接器错误:“错误 LNK1561:必须定义入口点”。知道还缺少什么吗?
    • @Arsen:Check MSDN。你说你正在构建一个 DLL,但你的项目的“配置类型”属性(见上面的截图)可能设置为构建一个可执行文件。更改它以构建 DLL。正如我建议的那样,检查其他属性以确保它们与您的工作 x86 配置相匹配。
    • 好的。知道了。配置类型必须设置为动态库,并且已修复它。非常感谢!
    【解决方案2】:

    您将创建一个“x64”配置,有第二个下拉框用于“复制设置自”。这也必须正确设置为从您的其他配置中复制设置。

    但既然您已经这样做了,也许您的所有程序集引用都没有复制到您的“x64”配置中。您是否检查过您的 x64 项目设置以查看它们是否存在?打开您的项目设置并选择: 通用属性 -> 框架和参考 然后确保您有对 System 的引用(至少)

    【讨论】:

    • 引用在那里,但它们指向 C:\Program Files (x86)\ 文件夹中的文件
    • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll
    • 是的,没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多