Mehrdad, это не всегда вопрос о том, как СВЯЗАТЬСЯ с DLL, так как лично я НИКОГДА не связывал DLL с помощью файла .DEF.Что я сделал , так это взял чужую DLL и очень тщательно создал файл заголовка, или, скорее, прототипы функций, которые я мог бы использовать с LoadLibrary()
в C, Declare Function ... Lib "Foo.dll" Alias "OrdinalName"
в VB и [DllImport()]
в C #.
Конечно, это РЕАЛЬНО сделано, как будто вы используете DLL для чего-то, обычно у вас есть разрешение на это, и авторы предоставляют .lib и заголовки, чтобы идти сбинарный файл DLL.
Я никогда не использовал точные методы, о которых вы говорите, путем преобразования информации .DEF в .LIB и т. д. Но, я полагаю, было бы легко взять библиотеку, илисама DLL и экспорт .DEF из нее.Теперь, что я на самом деле БЫЛ сделал в проекте, где код DLL был построен с использованием vbScript, который взял код из основного проекта и создал API из всего существующего, скомпилированного и протестированного кода.Этот уровень сложности был сделан только потому, что я понятия не имел, какие функции будут в BE, поскольку основной проект может измениться в любое время, поэтому статический файл .DEF никогда бы не сработал.Итак, мне пришлось собрать DLL один раз, перехватить dimpbin /exports
, декорировать функции, а затем собрать файл .DEF и заново связать DLL.
Если вы оказались в ситуации такого типа, возможно, вам нужно переосмыслить ваш оригинальный дизайн и устранить проблему оттуда ...
Что касается файлов .LIB, обычно вы бы NEED только для статических связей,но они также используются, когда файл .H доступен, часто делая отладку немного более приятной ...