Какую библиотеку кода я должен построить для распространения? - PullRequest
1 голос
/ 08 января 2009

Мне нужно создать библиотеку C ++ для распространения среди наших клиентов. Библиотека должна иметь доступ к широкому спектру языков, включая VB6, C ++, VB.net и C #.

До сих пор я использую элементы управления ActiveX (файлы ocx). Но мне интересно, есть ли лучшая библиотека (dll и т. Д.), Которую я могу построить. Что вы рекомендуете?

Я ограничен C ++ в качестве языка библиотеки, но вы можете упомянуть другие языки для ссылки на других разработчиков.

P.S. Извините, если вопрос уже был задан. У меня были некоторые проблемы с поиском подходящего названия. Не стесняйтесь исправлять мой английский.

Редактировать: Похоже, что лучший выбор - либо DLL, либо OCX (т.е. COM), но у меня все еще есть некоторые сомнения относительно того, какой из них я выберу. Какой из них больше подходит для современных языков (например, .NET)? Какой из них будет проще использовать с точки зрения конечного разработчика?

Ответы [ 4 ]

3 голосов
/ 08 января 2009

Почти на каждом языке есть способ загрузки динамических библиотек и доступа к экспортируемым функциям Си из них.

Ничто не мешает вам использовать C ++ внутри dll, но для максимальной переносимости экспортируйте только функции C. У меня есть еще кое-что об этом в этом посте .

3 голосов
/ 08 января 2009

Если вы ищете поддержку VB6 и .NET, вы в значительной степени застряли с предоставлением интерфейсов через COM, но по крайней мере это избавит вас от необходимости создавать более одной оболочки на основе языка система времени выполнения, с которой вы пытаетесь взаимодействовать.

1 голос
/ 16 января 2009

Если есть вероятность, что это нужно будет перенести на платформы, отличные от Windows, тогда библиотека DLL / Shared - ваш лучший выбор, поскольку COM-объект на самом деле совсем не переносим.

Кроме того, вы можете вызывать DLL практически с любой платформы, даже если для этого требуется написать какую-нибудь оболочку. Довольно легко обернуть dll в com-объект, но если вы создаете нативный com-объект, гораздо сложнее добавить API-интерфейс в стиле C. Кроме того, вы можете захотеть вызвать его, например, из Java, и гораздо проще написать JNI-оболочку для вызова вашей DLL, чем работать с COM любым кроссплатформенным способом.

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

0 голосов
/ 08 января 2009

Чтобы быть вызываемым из всех этих языков, единственным реальным вариантом будет COM, без необходимости писать обертки там, где это необходимо (что победит точку)

...