|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.07.2014, 00:41 | #1 |
Пользователь
Регистрация: 02.07.2014
Сообщений: 22
|
кто-нибудь работал с командой IMPLIB??
Я сделал тестовую DLL на DELFI int sum(int a, int b) result:=a+b
и нужно загрузить её из Builder 5 (или RAD XE5). Бьюсь- бьюсь, ничего не выходит! Помогите, пожалуйста! |
02.07.2014, 10:38 | #2 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
Динамическая загрузка:
1) Описываешь указатель на функцию Код:
Код:
Код:
1) С помощью IMPLIB создаёшь Sum.lib и подключаешь к проекту Код:
Код:
Код:
Последний раз редактировалось Stilet; 02.07.2014 в 16:45. |
02.07.2014, 16:03 | #3 |
Пользователь
Регистрация: 02.07.2014
Сообщений: 22
|
Извините, но не получается ни-фи-га! 5 323-ой раз "unresolvd"...
Не могли бы Вы сделать и послать мне исходники на kornju@mail.ru ? Меня интересует только статический случай. или возьмите мои... http://kornju.hop.ru/make%20DLL.zip http://kornju.hop.ru/use%20DLL.zip Последний раз редактировалось Stilet; 02.07.2014 в 16:50. |
02.07.2014, 17:55 | #4 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
Два момента. В use DLL
Код:
Код:
|
02.07.2014, 19:31 | #5 |
Пользователь
Регистрация: 02.07.2014
Сообщений: 22
|
БОЛЬШУ-У-У-ЩЕЕ спасибо!!!
Я добавил в DELFI-йскую функцию stdcall и всё заработало как надо! Возвращает 5.
ПОЖАЛУЙСТА, проконтролируйте и мою основную работу. Я заключил договор на написание интерфейса к прибору. К нему имеется только описание и dll-ка на DELFI: CCDUSBDCOM01.dll Я буду писать программу на RAD XE5. Сейчас моя задача, чтобы программа проглотила один из трёх вариантов: HitTest(long); // как в паскалевском примере ССD_HitTest(long); // как в описании ССDСОМB_HitTest(long); // как в def файле (сделал impdef-ом) ... |
03.07.2014, 11:22 | #6 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
Так, всё по образу и подобию. В чём трудность?
|
06.07.2014, 09:55 | #7 |
Пользователь
Регистрация: 02.07.2014
Сообщений: 22
|
А вот снова не получается!
Для функций (тестовой) sum, для HitTest, GetSerialNumber - вроде работает(??) а на ССD_Init - ругается. Дельфийский вариант берёт, а си-шный нет! Подскажите, как правильно? extern "C" __declspec(dllimport) //long //unsigned char boolean _stdcall CCD_Init(HWND ahAppWnd, char* Prm, long ID); //extern "C" __declspec(dllimport) long _stdcall // CCD_GetSerialNum(long ID, char* Prm); /* function CCD_Init (ahAppWnd : HWND; Prm : PChar; Var ID : Integer) : boolean; stdcall; */ void __fastcall TForm1::Button1Click(TObject *Sender) { char* Prm; long temp=0; CCD_Init(Application->Handle, Prm, temp); } Говорит исключение в CCDUSBDCOM01.dll. Write of adress 0000000. А функции hittest и getserialnum вроде работают. И тестовая sum(a+b) - тоже. Моя программа korrn.hop.ru/CC.ZIP |
06.07.2014, 10:28 | #8 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
1) Не возможно скачать файл по указанной ссылке.
2) Если программа компилируется, значит функцию линкер находит. Исключение может возникать только в том случае, если аргументы передаются в стек не в том порядке. За порядок передачи аргументов отвечает модификатор stdcall. Попробуй pascal... |
06.07.2014, 10:50 | #9 |
Пользователь
Регистрация: 02.07.2014
Сообщений: 22
|
|
06.07.2014, 10:51 | #10 |
Пользователь
Регистрация: 02.07.2014
Сообщений: 22
|
Действительно? Какая-то ерунда! Сейчас разберусь...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кто нибудь работал с yandex tts? | timedo | PHP | 0 | 03.06.2013 23:55 |
Есть кто-нибудь, кто работал с файлами excel на c#? | Bi0max | Microsoft Office Excel | 11 | 23.08.2012 13:07 |
не знаю как выполнить.кто-нибудь...ну кто-нибудь... | blina | Общие вопросы по Java, Java SE, Kotlin | 1 | 12.05.2010 11:43 |
Кто нибудь работал с Astron SiteManager? | Начинающая | Софт | 2 | 15.07.2008 17:11 |