Директива VC ++ #import для GCC / G ++ - PullRequest
3 голосов
/ 26 июня 2009

Я пытаюсь протестировать библиотеку, которая предоставляет пример VC ++; однако я использую gcc / g ++ для всех своих проектов.

Итак, способ, которым пример VC ++ обращается к библиотеке, заключается в том, что он использует директиву # import , передавая местоположение библиотеки DLL, затем он использует пространство имен LIBRARYNAME , а затем он может создать какой-то неопределенный тип (я бы предположил, что он определен в DLL) и создать его новый экземпляр с __uuidof. С тех пор, чтобы вызвать одну из библиотечных функций, пример просто выполняет createObj-> foo () и все.

Хорошо ... #import g ++ отличается от импорта в VC ++ (см. здесь ), поэтому этот пример мне не подойдет.

Есть ли способ, которым это можно преобразовать для компиляции в g ++, или я SOL, пока разработчик библиотеки не предоставит мне статическую библиотеку, которую я могу попробовать?

Ответы [ 3 ]

2 голосов
/ 31 июля 2009

Если вы использовали #import в VC ++, это означает, что DLL не является обычной DLL, это COM DLL.

Поскольку у gcc нет поддержки COM, вам просто нужно подождать, пока автор библиотеки напишет не-COM версию.

2 голосов
/ 20 мая 2010

Возможно, это могло бы помочь вам использовать OLEViewer и «Просмотр информации о типе» для извлечения основ IDL. Или, может быть, вы можете просто использовать сгенерированные VC ++ файлы .tlh и .tli и импортировать их в свой проект G ++.

Полагаю, этот ответ слишком поздно, но сейчас я сам сталкиваюсь с подобными проблемами, поэтому я только что попал в эту ветку. Надеюсь, вы нашли решение вовремя.

Привет.

2 голосов
/ 26 июня 2009

Если вы используете cygwin, то эта страница: http://www.cygwin.com/cygwin-ug-net/dll.html предоставит вам всю необходимую помощь.

Если вы используете mingw, вы можете выполнить то же самое, но у вас, вероятно, не будет grep и sed, поэтому вам придется использовать какой-то другой метод фильтрации, чтобы получить файл .def.

...