Какую DLL я должен использовать (или .lib, или класс) - PullRequest
1 голос
/ 28 августа 2009

Итак, я новичок в .net и c ++ и мне нужна «библиотека» функций, которые можно вызывать, а также события , которые вызываются в основном приложении, использующем библиотеку.

У меня есть библиотека C ++ (.lib), в которую я хочу добавить еще один слой (обертку) поверх него и предоставить только несколько функций и событий для основного приложения. Я не знаю, какую технологию приложения использовать: C #, VB.net или CLR Winform (не знаю, правильное ли это имя).

Что я хочу сделать? Что я должен искать в Google?

Полагаю, мне нужно создать DLL (но что это? Я видел C, C ++ и .net C ++)

Выставляю ли я класс C ++? Но как мне поднять события? Виртуальные функции, я верю, верно?

Создать ли какой-нибудь объект, на который приложение ссылается, чтобы иметь события / функции?

Как видите, я новичок в этой технологии и новичок в этой области.

Спасибо

Ответы [ 2 ]

1 голос
/ 28 августа 2009

Итак, учитывая, что вы уже написали библиотеку DLL на языке c / c ++ и теперь хотите написать графический интерфейс, который его использует, вот мои предложения:

  1. Написать графический интерфейс в .net framework, а именно: управляемый c ++, c # или VB.net (лично я предпочитаю c #).
  2. Чтобы передать функциональность DLL в приложение .net, у вас есть несколько вариантов: использовать P / Invoke или использовать управляемые оболочки C ++.

По пункту №2 мое личное предложение, предполагая, что ваша DLL имеет более чем несколько функций, - написать управляемую DLL C ++. Вот довольно простое, но хорошее учебное пособие , оно сводится к компиляции DLL в качестве управляемого кода и написанию классов-оболочек для доступа других приложений .net к неуправляемым функциям / классам. 1013 *

0 голосов
/ 28 августа 2009

Woah:)

.. CLR Winform ..

Вы имеете в виду C ++ / CLI?

Ну .. Все зависит от того, на каком языке вы не хотите использовать свою обертку. .Dll может быть много разных вещей, с точки зрения реализации, но все они имеют что-то общее: они получили данные, которые вы можете использовать из других приложений. Эти данные являются методами, классами, общедоступными целыми числами, что угодно:)

Если вы хотите использовать свой фасад в C ++, напишите .dll в C ++. Если вы хотите использовать его из .Net, напишите его на любом языке .Net, который вы хотите, используя P / Invoke, или используйте C ++ / CLI - но остерегайтесь сотен подводных камней, возникающих при работе на разных языках. .Net использует сборщик мусора, C ++ - нет (по умолчанию :). Вы можете использовать что-то вроде указателей Boost или тому подобное, чтобы получить «GC-чувство».). Вы не упоминаете, какую IDE вы планируете использовать или какой O / S вы планируете использовать. Например, .dll в Windows отличается от такового в Linux.

Итог: зависит от вашего целевого языка, O / S и для простоты написания фасада, IDE:)

Удачи с этим.

Visual studio: C ++ dll , .Net dll , нативная оболочка C ++ для .Net с использованием C ++ / CLI

...