Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Проблеммы с линковкой в Builder6

Вы не вошли.

 Поиск | Регистрация | Вход 

Novikov Andrey V.
11.04.2005 18:29:55
#1

Гость

Проблеммы с линковкой в Builder6

Недавно купили у вас АЦП L780.
Программу решили писать в Builder6.
Попробовал набрать ваш первый пример из manual.pdf
и сразу начались проблемы! говорит "Unresolved external "_IID_ILDEV" in MainUnit.obj". Т.е. не определена IID_ILDEV. Где ее взять?

11.04.2005 20:22:44
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблеммы с линковкой в Builder6

Примеры вообще-то в каталоге L-Card/Library лежат после установки драйверов...

Novikov Andrey V.
12.04.2005 11:56:38
#3

Гость

Re: Проблеммы с линковкой в Builder6

Сделано все как в примерах.

12.04.2005 12:00:25
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблеммы с линковкой в Builder6

Примеры не просто так лежат а с проектами.
То чтего не хватает в папке include лежит.

Novikov Andrey V.
12.04.2005 13:12:56
#5

Гость

Re: Проблеммы с линковкой в Builder6

Это все понятно. вот только:
1. В файле create.h ошибка (Не объявлена IDaqLDevice. приходится править: вставлять #include "ifc_ldev.h"). Может конечно это не ошибка, и я что-то неправильно делаю...
2. Созданный по инструкции в manual.pdf и по образу и подобию предложенных "примеров" проект не собирается по причине указанной в первом посте.

Что я сделал.
1. Я скопировал в директорию проекта все сдержимое папки include. а так же create.cpp и включил его в проект. (сначала я скопировал только необходимые файлы но потом взял уже все...)
2. тело программы выглядит след. образом:

ULONG slot = 0;
trace("Get IUnknown pointer");
CallCreateInstance("lcomp.dll");
LUnknown* pIUnknown = CreateInstance(slot);
if(pIUnknown == NULL) { trace("CallCreateInstance failed"); return ; }
trace("Get IDaqLDevice interface");
IDaqLDevice* pI;

HRESULT hr = pIUnknown->QueryInterface(IID_ILDEV,(void**)&pI);
if(!SUCCEEDED(hr)) { trace("Get IDaqLDevice failed"); return ; }
trace("IDaqLDevice get success");

trace("Free IUnknown");
pIUnknown->Release();
pI->OpenLDevice(); //
pI->LoadBios("l780");
//...
pI->CloseLDevice(); //
pI->Release();

Ошибка возникает при линковке. Линкер не может найти определения IID_ILDEV.
В файле ifc_ldev.h есть строчка:
DEFINE_GUID(IID_ILDEV, 0x32bb8320, 0xb41b,0x11cf, 0xa6, 0xbb, 0x00, 0x80, 0xc7, 0xb2, 0xd6, 0x82);

видимо она и не работает. я к сожалению не знаю такого макроса DEFINE_GUID(...) поэтому предполагаю, что дело в нем.
Не могли бы Вы предложить решение это проблемы? Или может пришлете или укажете на элементарный Builder проект, который просто подключаеь вашу библиотеку (что-то типа кода представленного выше)

12.04.2005 14:03:44
#6

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблеммы с линковкой в Builder6

Там есть файлы create.cpp и lguids.cpp, они должны быть в проекте. А инклюды как в примере
#include "../include/ioctl.h"
#include "../include/ifc_ldev.h"
#include "../include/create.h"

А чего билдер ide от BC не открывает? Я с билдером не работаю просто...

Novikov Andrey V.
12.04.2005 14:46:20
#7

Гость

Re: Проблеммы с линковкой в Builder6

Спасибо. Теперь все заработало. Оказывается я не прилинковал lguids.cpp.

Нет. билдер открывает только свои проекты. Может есть какой-то способ конвертации, но он мне не извествен.

PS: Я работаю с билдером только потому, что у него есть классная компонента TChart, отображающая графики. Лучшего я написать не смогу, да и не пытаюсь. Я физик и заниматься программированием больше необходимого не хочу.

PPS: Снова хочется обратить Ваше внимание на качество вашей документации. Со времен L1230 оно конечно улучшилось, но все равно ее уровень значительно уступает мирвым аналогам. Скажем настройка и введение в эксплуатаю платы NI заняло у меня значительно меньше времени чем любая из ваших плат, не смотря на то, что вся документация была естественно на англ. языке.