This is topic Создание драйвера на C++ Builder in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/14/t/000047.html

Posted by avalex (Участник № / Member № 874) on :
 
Из описания:
"DLL описания носителя (mediaN.dll) должна экспортировать функции по именам, причем имена должны быть декорированными в стиле MS Visual C++. Добиться этого можно, используя DEF файл."

Каким образом это можно сделать?

Должно быть так: ?CloseMedia@@YAHAAJ@Z
Получается так: @CloseMedia$qrl

Переопределение имени функции в DEF-файле типа
EXPORTS
?CloseMedia@@YAHAAJ@Z=@CloseMedia$qrl
не проходит, т.к. компановщик Borland не воспринимает символ '?'.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В документации допущена неточность, файл описания носителя (mediaN.dll) должен экспортировать функции не по именам, а, так же как и файлы t11 и t12, по порядковым номерам. Для создания библиотеки нужного вида не обязательно использовать DEF-файл, достаточно просто объявить функции как экспортируемые. Т.о. в проекте типа DLL в CPP-файле пишется так:
(порядок следования функций - алфавитный, в том же порядке они будут экспортированы)

//---------------------------------------------------------------------------

#include <windows.h>
#include <stdio.h>


int __export CloseMedia(long &hndl)
{
return 0;
}

int __export OpenMedia(long &hndl)
{
//FILE* fp = fopen("C:\\test_borlnd.txt", "wt");
//fprintf(fp, "Loading from Borland");
//fclose(fp);
//
hndl = 1;
//
return 0;
}

int __export ReadMedia(long &hndl, char *rbuf, int in_count, int &actual_count)
{
return 0;
}

int __export StartMedia(long &hndl)
{
return 0;
}

int __export StopMedia(long &hndl)
{
return 0;
}

int __export WriteMedia(long &hndl, char *sbuf, int out_count, int &actual_count)
{
return 0;
}

//////////////////////////////////////////////////////////////////////////////
#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
return TRUE;
}
//---------------------------------------------------------------------------
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2