Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Подключение к проекту .lib-файла, описывающего dll


Автор: Курсант 28.12.2018, 15:46
Всем доброго времени суток!

Пытаюсь заставить работать преобразователь VSCOM USB-CAN Plus под управлением моей программы на C++ Builder (версия 6).
Изготовитель преобразователя распространяет со своим устройством следующий софт:
- драйвер;
- заголовочный файл vs_can_api.h
- библиотеку vs_can_api.dll
- lib-файл vs_can_api.lib
Что я сделал:
- заголовочный файл прописал через #define в модуле Unit1.cpp;
- dll-ку закинул в папку проекта;
- с помощью coff2omf преобразовал lib-файл в формат omf, т.к. builder требует именно этот формат;
- подключил к проекту преобразованный lib-файл vs_can_api.lib;
- в обработчике нажатия кнопки вызвал функцию, прототип которой прописан в vs_can_api.h, а именно VSCAN_Open(... ... ...).
Попробовал собрать проект. В итоге получил сообщение [Linker Error]Unresolved external "_VSCAN_Open" referenced from ....UNIT1.OBJ
Погуглил. Нашел, что Builder перед именами функций пишет знак _.
Поправил прототип функции VSCAN_Open в h-файле, а именно сделал ее _stdcall.
Попробовал собрать проект. В итоге получил сообщение [Linker Error]Unresolved external "VSCAN_Open" referenced from ....UNIT1.OBJ
Погуглил. Нашел, что coff2omf не всегда хорошо преобразовывает из формата coff в формат omf.
С помощью утилиты implib сделал .lib-файл для dll-ки vs_can_api.dll.
Подключил к проекту этот lib-файл вместо старого.
Попробовал собрать проект. В итоге получил сообщение [Linker Error]Unresolved external "VSCAN_Open (CHAR *SerialNrORComPortORNet, DWORD Mode)" referenced from ....UNIT1.OBJ

Как его штатными способами заставить работать? Динамически подключиться к dll конечно можно, но хотелось бы разобраться...

Заранее спасибо smile

Автор: XPyCT 22.2.2019, 09:33
А подключили саму либу?

1. Укажите путь поиска заголовка (header.h)
2. Укажите путь поиска статической библиотеки (library path)
3. Подключите в вашем юните статическую библиотеку  
Код

#include <vcl.h>
#pragma hdrstop
...
#pragma comment ( lib, "имя либы" )
...

все пути для заголовочный файлов и библиотек прописываете в Project::Options::Include path и Project::Options::library path

пс: насколько я понимаю он не видит хидера ([Linker Error]Unresolved external) вернее пытается найти в хидере.

В общем свое видение я отписал удачи!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)