gpt4 book ai didi

c# - 托管 C++ dll 中的 XmlnsDefinition

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:35 25 4
gpt4 key购买 nike

我们有一个托管 dll,它实现了一个从 Cpp 命名空间中的 HwndHost 派生的公共(public)引用类。我们构建了一个名为 mydll10.dll 的 x86 版本和一个名为 mydll10_x64.dll 的 x64 版本。我们在 xaml 页面的 WPF 应用程序中使用 Cpp 命名空间。我们能够使用“$(Platform)”条件在项目中添加适当的引用。但是我们应该在同一个页面中同时使用xmlns:c="clr-namespace:Cpp;assembly=UvpProInspectWpf10"对于 x86 和 xmlns:c="clr-namespace:Cpp;assembly=UvpProInspectWpf10_x64"对于 x64 exe。不可能在 xaml 中使用任何类型的#if#then #else。

如果 Cpp 命名空间位于 C# 项目中,则可以编写解决方案

`myurl:"http://schemas.me.com/wpf/"
#if x64
[assembly: XmlnsDefinition(myurl, "UvpProInspectWpf10_x64")]
#else
[assembly: XmlnsDefinition(myurl, "UvpProInspectWpf10")]
#endif

Assembly.cs文件并定义

xmlns:c=" http://schemas.me.com/wpf/” 

在 xaml 中。我找不到如何在托管 C++ 项目中执行这些程序集定义。这可能吗?当然我们可以打破我们的命名规则......谢谢

最佳答案

找到了。将对 System.Xaml.dll 的引用添加到 C++ 托管项目。使用

添加 AssemblyInfo.cpp 文件
using namespace System::Windows::Markup;
[assembly:XmlnsDefinition("http://schemas.me.com/wpf/", "Cpp")];

然后就可以在xaml页面中使用了

xmlns:c=" http://schemas.me.com/wpf/” 

项目引用正确的 x86 或 x64 版本

关于c# - 托管 C++ dll 中的 XmlnsDefinition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com