Как использовать файл .def для явных ссылок? - PullRequest
0 голосов
/ 03 декабря 2009

Я столкнулся с проблемой, чтобы связать с третьей стороной DLL. Это приложение для Windows Mobile, где я пытаюсь связаться с этой сторонней DLL.

Здесь сначала у меня был файл DLL и lib. Я не смог явно ссылаться на него, но неявное связывание работает. В явном связывании getprocaddress не удалось. В дампбине отображались только доступные функции dllmain и никакие другие функции, следовательно, getprocaddress не работал. Однако мое приложение не запускается, если dll не найдена / не установлена ​​в устройстве. Ожидается, что это неявное связывание DLL, поэтому мое приложение не запускается.

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

Я не знаю, как использовать этот файл .def для явной ссылки на dll. Может ли кто-нибудь объяснить вкратце о том, как использовать этот файл .def в моем приложении для явной ссылки на dll.

1 Ответ

2 голосов
/ 03 декабря 2009

Используйте файл *.def при сборке DLL, чтобы указать, какие имена функций должна экспортировать DLL.

После создания библиотеки DLL используйте dumpbin /exports, чтобы убедиться, что функции действительно экспортированы из библиотеки DLL.

После того, как вы убедились, что DLL экспортирует функции, вы можете связать их с ними во время выполнения, используя LoadLibray / GetProcAddress, и / или вы можете связать их с ними во время сборки, передав файл DLL *.lib ( которая была создана при сборке библиотеки DLL с использованием файла *.def) в качестве аргумента компоновщика вашего приложения.

...