Использование Delphi DLL с VS2010. & quot; Не удается найти точку входа функции _DataReady @ 0 в DSOLink.dll & quot;

Я пытаюсь использовать цифровую сферу Vellman PCSU1000 в одном из моих проектов, которые я пишу на C ++ в Visual Studio 2010.

Для этого мне нужно использовать две библиотеки DLL, предоставляемые производителем устройства: DSOLink.dll и PCSU1000D.dll. У меня нет других связанных файлов. Насколько я понял из руководства, эти DLL были написаны и скомпилированы в Deplhi. Существует краткое описание функций, содержащихся в каждой из DLL и как их использовать на разных языках программирования. Для языка C ++ производитель выбрал Borland C ++ Builder и добавил следующий код (для использования DSOLink.dll он аналогичен PCSU1000D.dll):
DSOLink.h

//---------------------------------------------------------------------------
// DSOLink.h

#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif
#define FUNCTION __declspec(dllimport)

FUNCTION bool __stdcall DataReady(); /*this particular line is added by me based on
list of the functions listed by dumpbin/exports DSOlink.dll and manual*/
FUNCTION __stdcall ReadCh1(int* ptr);
FUNCTION __stdcall ReadCh2(int* ptr);
#ifdef __cplusplus
}
#endif
//---------------------------------------------------------------------------

Согласно инструкции, найденной в MSDN: http://support.microsoft.com/kb/131313
Я создал файл .lib. Благодаря этому Построить решение заканчивается успешно, но отладка возвращает сообщение об ошибке «Не удается найти точку входа функции _DataReady @ 0 в DSOLink.dll».

Из статьи: http://bcbjournal.org/articles/vol4/0012/Using_Visual_C_DLLs_with_CBuilder.htm?PHPSESSID=ab5f6c83b3da921591a490a5accb5bf7 Я знаю, что в C ++ Builder ключевое слово * __stdcall * указывает на отсутствие декорации, в то время как в VS означает прямо противоположное.

Я понимаю, что в этой ситуации я вынужден использовать * __stdcall * в VS (это должен быть тот же метод управления очисткой стека в DLL и в заголовке, который используется в приложении) и метод без декорации одновременно … Я читал, что файлы .DEF могут помочь, но я теряюсь, как именно это следует использовать. Я пытался создать DEF по-разному:

EXPORTS
DataRead=DataRead
.
.
.

EXPORTS
DataRead=_DataRead@0
.
.
.

EXPORTS
_DataRead@0=DataRead
.
.
.

и добавил один из них сразу в мой проект, но ни один из них не решает проблему.

Кто-нибудь имеет представление о том, как правильно заставить VS не использовать и не ожидать, что украшенные имена будут * __stdcall *?
Или, может быть, причина моей проблемы в чем-то другом, и кто-то знает это?

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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]