Всем привет.
Пишу программу на 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. Хотя:
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. перелезать на студию не очень хочется.