Название: Подружить Visual Prolog 7.1 и MinGW 3.4.5 Отправлено: MoPDoBoPoT от Июнь 05, 2010, 21:59 Всем привет.
Пишу программу на Visual Prolog 7.1 Personal Edition (PE), из которой надо обращаться к БД, но данный фунционал возможен только в Commercial Edition. Поэтому я решил написать свою dll-ку (на C++/Qt), в которую поместил всю необходимую работу с БД. Но слинковать полученную библиотеку с prolog-программой мне не удается, линкер выдает лаконичное "Interior fatal error: COFF reloc". Подгрузить dll явно тоже нельзя - ограничение PE... Все имеющиеся примеры работы с dll (а их не много) либо с ипользование Visual Basic, либо Visual Studio (есть на руках 1 пример, и он, собака, работает). Из библиотеки экспортируется лишь одна единственная функция, которая возвращает int. Была помеченная как extern "C". Бибиотека 100% рабочая, так как я ее пробовал линковать с C++ проектом. Подразумеваю, что загвоздка в некоторых различиях библиотечных файлов, создаваемых VS и GCC. Хотя: Цитата: Visual Prolog Help The PDC Link Editor accepts the following types of input files: -Object files and libraries in OMF format (32-bits, made by Borland compilers). Number of files is not limited. -Object files in the Common Object File Format (COFF) (made, for example, by Microsoft (C) 32-bits compilers). Number of files is not limited. -Linker can link mixed object files of OMF and COFF formats (with certain limitations on call rules) producing valid executable files. -Libraries in the Microsoft library format. Number of files is not limited. -Libraries in the archive format. Number of files is not limited. -Standard Windows 32-bits resource files. Number of resource files is not limited. -Definition files (.DEF). Number of DEF files is not limited. Вопрос: каким образом можно побороть это? Может какими-то ключами компилятора/линкера gcc? Или как-то перегнать имеющийся библиотечный файл, собранный MinGW, в формат VS (знаю что есть обратный способ: .lib -> .a) P.S. перелезать на студию не очень хочется. Название: Re: Подружить Visual Prolog 7.1 и MinGW 3.4.5 Отправлено: MoPDoBoPoT от Июнь 05, 2010, 22:04 Кстати, чисто случайным образом, когда эксперементировал с dll, созданной в прологе, загрузил свою dll (С++). Линковка была произведена с "прологовской" библиотекой, а при запуске программы, рядом с .exe оказалась моя dll.
Но я этому криво*опскому способу не доверяю, да и не кашерно. Название: Re: Подружить Visual Prolog 7.1 и MinGW 3.4.5 Отправлено: MoPDoBoPoT от Июнь 05, 2010, 23:16 Всем спасибо за внимание, вопрос снят :)
"Подружить" Visual Prolog и MinGW не удалось, то есть слинковать exe с библиотекой, но подцепить "нормальным" (не кривож...) способом удалось. В ViP'е есть такая возможность, как "неявная динамическая" подгрузка (не нужна линковка с библиотекой, но и не надо самому явно загружать dll, это сделает за нас ViP, при первом же вызове предиката, расположенного в данной dll). В общем время было потрачено из-за двух дополнительных слов... Вместо "resolve predicateName externally" в имплементации интерфейса, надо было написать "resolve predicateName externally from "myDllName.dll"". P.S. после Qt-шной доки сложно изучать иную |