Как использовать DLL без необходимости ее файлов .h и .lib в проекте VC ++ 6.0? - PullRequest
4 голосов
/ 20 декабря 2011

Я не знаю, как сделать следующее:

  • Я использую MS Visual C ++ 6.0
  • У меня есть проект Win32 DLL, который можно скомпилировать.
  • У меня есть другой проект, на этот раз проект Win32 Console, который использует DLL, включая заголовочный файл и связывая файл .lib библиотеки DLL.

Теперь я хочу получитьдругой проект, похожий на второе НО без использования файла заголовка и файла lib.

Возможно ли это?Везде, где я читаю, вам нужны либо dll + lib + h, либо dll + h.Если подумать, если вы знаете интерфейсы, достаточно файла DLL?

Кстати, под «использованием DLL» я подразумеваю использование классов и функций, определенных в DLL.

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

Это возможно, если у вас есть простые функции "extern C".Если дело обстоит так, подход мог бы загрузить dll с LoadLibrary, а затем импортировать каждую функцию с GetProcAddress, конечно, вам нужно знать сигнатуру функции, чтобы создать правильно объявленный указатель на функцию.Использование классов за наоборот практически невозможно.

0 голосов
/ 20 декабря 2011

Если ваша DLL содержит классы, есть хорошие шансы, что это COM-компонент.

В этом случае директива #import (которую вы используете как #include) создает временные включаемые файлы, содержащие сведения об интерфейсе. Вы должны использовать COM для доступа к вашим объектам.

В противном случае, если у вас есть «простая» DLL с классами C ++, вы можете получить доступ к экспортированным символам с помощью компоновщика: поручите ему сбросить карту (см. здесь ), чтобы узнать искаженные имена. Но я не думаю, что возможно построить интерфейс вручную ...

...