Использование C ++/CLI для C# Winui Project и Native C ++ -совместимость проектаC#

Место общения программистов C#
Ответить
Anonymous
 Использование C ++/CLI для C# Winui Project и Native C ++ -совместимость проекта

Сообщение Anonymous »

У меня есть следующая настройка:
У меня есть проект Winui C#, из которого я генерирую DLL, затем я использую проект C ++/CLI, чтобы подвергать функции нативного проекта C ++.

Код: Выделить всё

namespace ClassLibrary
{
public class Class1
{
public void SayHello()
{
System.Diagnostics.Debug.WriteLine("Hello from ClassLibrary.Class1!");

var window = new MainWindow();
window.Activate();
}
}
}
В моем проекте C ++/CLI:

Код: Выделить всё

//"ProjectCLR.h"
#pragma once

extern "C" __declspec(dllexport) void __stdcall StartWinUI();

//"ProjectCLR.cpp"
using namespace System;
using namespace ClassLibrary;

void __stdcall StartWinUI()
{
try
{
Class1^ obj = gcnew Class1();
obj->SayHello();
}
catch (Exception^ ex)
{
System::Diagnostics::Debug::WriteLine("StartWinUI failed: " + ex->Message);
}
}
< /code>
и, наконец, в моем проекте C ++: < /p>
int main()
{
HRESULT hrInit = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
if (FAILED(hrInit)) {
return hrInit;
}

PACKAGE_VERSION minVer{};
minVer.Major = 1;
minVer.Minor = 8;

auto hL = LoadLibraryW(L"Microsoft.WindowsAppRuntime.Bootstrap.dll");
if (!hL) return E_FAIL;

auto M = (decltype(&MddBootstrapInitialize))GetProcAddress(
hL, "MddBootstrapInitialize");
if (!M) return E_FAIL;

HRESULT hr = M(0x00010008, L"", minVer);
return hr;

Application::Start([](auto&&)
{
StartWinUI(); // ✅ Safe to create WinUI elements here
});

return 0;
}
Проблема заключается в том, что в моем проекте C# я строю Mainwindow , используя XAML, и он жалуется на отсутствие ресурсов XAML, не может найти ресурс из 'ms-appx: ///classlibrary/mainwindow.xaml , я не уверен, как я пробовал. C# class, читая файл, но кажется, что я теряю некоторую функциональность, это не похоже на то, как идти.
Заранее.

Подробнее здесь: https://stackoverflow.com/questions/797 ... perability
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»