Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> dll написан в VC надо чтоб в Delphi работало 
:(
    Опции темы
Frikazoid
Дата 26.11.2003, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 29.3.2002

Репутация: 1
Всего: 2



Доброго времени суток Господа!
У меня возник вопрос!
Как же всё таки подключить DLL'ку написанную на VC в Delphi?

Вот фу-я:
int __declspec(dllexport) __stdcall ExtPing(int nCommPort, BOOL bIsIrDA = FALSE);

Для импорта её же я написал:
function ExtPing(nCommPort:integer; bIsIrDA:boolean=FALSE):integer; external 'Cipher.dll' name 'ExtPing';
пробовал и:
function ExtPing(nCommPort:integer; bIsIrDA:boolean):integer; external 'Cipher.dll' name 'ExtPing';
При запуске прложения дебугег говорит, что не может найти точку входа в эту вот процедуру!
В чём же моя ошибка?

Заранее благодарен за любую помощь!

ЗЫ Весь материал тут

ЗЫ 8000 Series Terminal - mazdai....


--------------------
RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле!
А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое.
PM MAIL WWW ICQ   Вверх
stab
Дата 26.11.2003, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



попробуй так:

Код
function ExtPing(nCommPort:integer; bIsIrDA:boolean=FALSE):integer; stdcall; external 'Cipher.dll' name '?ExtPing@@YGHHH@Z';



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
stab
Дата 26.11.2003, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



думаю тебе это поможет:

Код

CCipher::CCipher(void)
CCipher::~CCipher(void)
class CCipher & CCipher::operator=(class CCipher const &)
int CCipher::CheckComm(void)
int CCipher::ClearDatabase(int)
int CCipher::ClearDoc(int)
void CCipher::CloseComm(void)
int ExtClearDatabase(int,int,int)
int ExtClearDoc(int,int,int)
int ExtFinish(int,int)
int ExtGetCurrentState(char *,int,int)
long ExtGetDataCount(int,int,int)
long ExtGetFreeMemory(int,int)
long ExtGetRecordsCount(int,int,int)
int ExtGetSerialNumber(char *,int,int)
int ExtGetTime(char *,int,int)
int ExtPing(int,int)
int ExtPutRecord(int,char const *,int,int)
int ExtReadData(int,char *,int,int)
int ExtReadRecord(int,char *,int,int)
int ExtUpdateTime(int,int)
int CCipher::Finish(void)
int CCipher::GetCurrentState(char *)
long CCipher::GetDataCount(int)
int CCipher::GetErrorDescription(int,char *)
long CCipher::GetFreeMemory(void)
int CCipher::GetLastError(void)
long CCipher::GetRecordsCount(int)
int CCipher::GetSerialNumber(char *)
int CCipher::GetTime(char *)
int CCipher::InitComm(void)
int CCipher::OpenComm(int,int)
int CCipher::OpenIrDA(void)
int CCipher::Ping(void)
int CCipher::PutRecord(int,char const *)
int CCipher::ReadData(int,char *)
int CCipher::ReadRecord(int,char *)
int CCipher::SendCommand(char const *,char *)
int CCipher::TestIrDA(unsigned long)
int CCipher::UpdateTime(void)


Код

??0CCipher@@QAE@XZ
??1CCipher@@QAE@XZ
??4CCipher@@QAEAAV0@ABV0@@Z
?CheckComm@CCipher@@QAEHXZ
?ClearDatabase@CCipher@@QAEHH@Z
?ClearDoc@CCipher@@QAEHH@Z
?CloseComm@CCipher@@QAEXXZ
?ExtClearDatabase@@YGHHHH@Z
?ExtClearDoc@@YGHHHH@Z
?ExtFinish@@YGHHH@Z
?ExtGetCurrentState@@YGHPADHH@Z
?ExtGetDataCount@@YGJHHH@Z
?ExtGetFreeMemory@@YGJHH@Z
?ExtGetRecordsCount@@YGJHHH@Z
?ExtGetSerialNumber@@YGHPADHH@Z
?ExtGetTime@@YGHPADHH@Z
?ExtPing@@YGHHH@Z
?ExtPutRecord@@YGHHPBDHH@Z
?ExtReadData@@YGHHPADHH@Z
?ExtReadRecord@@YGHHPADHH@Z
?ExtUpdateTime@@YGHHH@Z
?Finish@CCipher@@QAEHXZ
?GetCurrentState@CCipher@@QAEHPAD@Z
?GetDataCount@CCipher@@QAEJH@Z
?GetErrorDescription@CCipher@@QAEHHPAD@Z
?GetFreeMemory@CCipher@@QAEJXZ
?GetLastError@CCipher@@QAEHXZ
?GetRecordsCount@CCipher@@QAEJH@Z
?GetSerialNumber@CCipher@@QAEHPAD@Z
?GetTime@CCipher@@QAEHPAD@Z
?InitComm@CCipher@@IAEHXZ
?OpenComm@CCipher@@QAEHHH@Z
?OpenIrDA@CCipher@@IAEHXZ
?Ping@CCipher@@QAEHXZ
?PutRecord@CCipher@@QAEHHPBD@Z
?ReadData@CCipher@@QAEHHPAD@Z
?ReadRecord@CCipher@@QAEHHPAD@Z
?SendCommand@CCipher@@IAEHPBDPAD@Z
?TestIrDA@CCipher@@IAEHK@Z
?UpdateTime@CCipher@@QAEHXZ



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
pascal
Дата 27.11.2003, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 16.7.2003
Где: Россия - Уфа

Репутация: нет
Всего: 1



Очень уж любопытно, а как это вообще понимать?
то есть по какому принцепу это всё так шифруется?
PM MAIL WWW ICQ   Вверх
Frikazoid
Дата 27.11.2003, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 29.3.2002

Репутация: 1
Всего: 2



cully спасибо!


--------------------
RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле!
А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое.
PM MAIL WWW ICQ   Вверх
stab
Дата 30.11.2003, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Цитата
Очень уж любопытно, а как это вообще понимать?
то есть по какому принцепу это всё так шифруется?


Это долбаный компилер C\C++ так обзывает каждую функцию исходя из типов параметров, типа результата и, собственно, самого имени функции.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Frikazoid
Дата 5.12.2003, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 29.3.2002

Репутация: 1
Всего: 2



Как вот это вот
Код

class CIPHER_API CCipher {
public:
//methods
BOOL OpenComm(int nCommPort, BOOL bIsIrDA = FALSE);
BOOL CheckComm();
void CloseComm();
int  GetLastError();
BOOL GetErrorDescription(int nError, LPSTR szData);
BOOL Ping();
BOOL GetSerialNumber(LPSTR szData);
BOOL GetTime(LPSTR szData);
BOOL UpdateTime();
long GetFreeMemory();
BOOL GetCurrentState(LPSTR szData);
long GetDataCount(int nDoc);
long GetRecordsCount(int nBase);
BOOL ClearDoc(int nDoc);
BOOL ClearDatabase(int nBase);
int  ReadData(int nDoc, LPSTR szData);
int  ReadRecord(int nBase, LPSTR szData);
BOOL PutRecord(int nBase, LPCSTR szData);
BOOL Finish();
//start of implementation block
CCipher(void);
//variables
HANDLE  m_hComm;
DCB   m_dcb;
OVERLAPPED m_ov;
COMSTAT m_stat;
int  m_nLastError;
int  m_nCommPort;
BOOL m_bIsIrDA;
protected:
//methods
BOOL InitComm();
BOOL OpenIrDA();
BOOL TestIrDA(DWORD spec);
BOOL ReadData(LPCSTR szCommand, LPSTR szData);
//variables
char szIrDA[16];
};

Изобразить в дельфях?
Спасибо!


--------------------
RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле!
А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое.
PM MAIL WWW ICQ   Вверх
oleg1973
Дата 6.12.2003, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



нда smile.gif
asm
push указатель на имя dll
call loadlbrary
push указатель на кактамфункциюзовут
push eax
call getprocaddress
end;
сия хрень вернет в еах адрес той самой функ которую просили
и пофигу на чем написана dll

Это сообщение отредактировал(а) oleg1973 - 6.12.2003, 03:49


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Frikazoid
Дата 6.12.2003, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 29.3.2002

Репутация: 1
Всего: 2



да нет!
Мне нужно тот класс экспортнуть!


--------------------
RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле!
А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое.
PM MAIL WWW ICQ   Вверх
Frikazoid
Дата 7.12.2003, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 29.3.2002

Репутация: 1
Всего: 2



Ну поможите плз!


--------------------
RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле!
А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое.
PM MAIL WWW ICQ   Вверх
stab
Дата 7.12.2003, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48





--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Frikazoid
Дата 8.12.2003, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 29.3.2002

Репутация: 1
Всего: 2



Ну да, помню помню! но тогда я так и не получил нужного мне ответа!


--------------------
RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле!
А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое.
PM MAIL WWW ICQ   Вверх
stab
Дата 8.12.2003, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



а в чем проблема? что конкретно не получается?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Frikazoid
Дата 8.12.2003, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 29.3.2002

Репутация: 1
Всего: 2



Ну переведи мне ПЛЗ в дельфёвый вид этот класс. И всё! ПЛЗ!


--------------------
RTFM - "Всё для программиста" Это уменя есть сайт! Урыл в профайле!
А там.... Ну всё что надо по PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic и многое другое.
PM MAIL WWW ICQ   Вверх
Dmitry V.Abramov
Дата 8.12.2003, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.9.2003
Где: Saint-Petersburg

Репутация: 5
Всего: 4



Frikazoid Классы в каждом языке устроены по-разному. В Delphi и BCB постарались сделать их максимально схожими. И то, нет-нет да слышен вскрик наступившего на очередные грабли несовместимости. Про бинарный перенос классов из MSVC слышать пока не приходилось. Либо proxy-DLL, либо полухакерская адаптация, если для нее оставлены лазейки (как, например, поступили ребята с классами из GDI+).

Об этом ведь уже писалось. Причем именно по твоему вопросу. Причем подробно и с вариантами решений.

--------------------
/DVA
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1027 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.