Какой файл является объектом COM ++ и как мне импортировать его в .NET? - PullRequest
0 голосов
/ 10 апреля 2010

Я пытаюсь написать оболочку объекта COM ++ вокруг виджета Qt (элемента управления), который я написал, чтобы использовать его в будущих проектах .NET. e.g.:

public __gc class comWidget;

В каталоге компиляции находятся .exe, exe.intermediate.manifest и comWidget.obj, а также некоторые другие файлы дерьма (.pdb и т. Д.). Так что / как я могу импортировать в .NET? Я чувствую, что пропустил важный шаг для регистрации объекта или чего-то еще, но все эти учебники ужасно устарели и до смешного бесполезны (например, я использую старый синтаксис CLR, потому что не могу найти хорошие документы по новый материал)

1 Ответ

0 голосов
/ 10 апреля 2010

Ваш вопрос сформулирован так странно, это может быть только предположение, но я собираюсь предположить, что вы хотите написать компонент пользовательского интерфейса для использования в проектах .NET. Поэтому основная программа обычно пишется на C # или VB.NET и будет использовать Windows Forms или WPF в качестве среды пользовательского интерфейса. У вас есть некоторый существующий код C ++, написанный на C ++ с использованием Qt, который будет выполнять всю реализацию за вас, поэтому вам нужно написать виджет UI, совместимый с Windows Forms или WPF, в C ++ / CLI, где реализация является виджетом Qt, верно?

В Visual Studio 2008 запустите новый проект. Выберите C ++ в качестве языка и выберите библиотеку классов C ++ / CLL. Поместите в фиктивный класс:

public ref class Foo
{
public:
    void Bar() { }
};

Сборка проекта. В .NET исходной матрицей является ваша сборка, которая для библиотеки будет .DLL. Теперь запустите проект C # (консольное приложение) и добавьте ссылку на DLL, которую вы создали выше. Вы можете просто найти его на жестком диске.

В проекте C # добавьте что-то вроде этого в функцию Main:

var o = new MyClassLib.Foo();
o.Bar();

Это все, что нужно сделать. Создавая сборку DLL в C ++ / CLI, а затем добавляя ссылку на нее в проект C #, ее определения public ref class становятся доступны мгновенно. Не нужно ничего регистрировать.

Как только вы это выясните, вам нужно решить, что вы собираетесь делать с интеграцией виджета Qt (который, я предполагаю, сводится к дескриптору окна Win32?) В среду .NET UI. Это будет наиболее незаметно в Windows Forms, в которой все являются окнами Win32, но вы также можете настроить его для работы с более новым WPF, так как он позволяет соединять старые элементы управления.

Это может быть то, что вам нужно, чтобы начать: http://msdn.microsoft.com/en-us/library/ms235628.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...