Здравствуйте, LordWin, Вы писали:
LW>Как имея Dll которая была написана для експорта в Visual Basic (стянул у автора а обратного адреса для мыла у него нету) перенести в Visual C++ 7 .NET ????
LW>Visual C++ 7 .NET говорит что .lib файл неподходит или же битый ....
1. берем проект, в котором надо использовать твою mdmxsvr.dll, подключаем h и lib, какие есть:
#include "mdmxsvr.h"
#pragma comment(lib, "mdmxsvr")
ага, lib-а не нравится:
mdmxsvr.lib : warning LNK4003: invalid library format; library ignored
2. Создаем свою (
IMPDEF.exe из комплекта Borland C++ Builder):
impdef.exe mdmxsvr.def mdmxsvr.dll
получился mdmxsvr.def:
LIBRARY MDMXSVR.DLL
EXPORTS
MDMX_Close @4 ; MDMX_Close
MDMX_GetDMXTransmissions @3 ; MDMX_GetDMXTransmissions
MDMX_OpenSerialDevice @1 ; MDMX_OpenSerialDevice
MDMX_SetChannel @2 ; MDMX_SetChannel
___CPPdebugHook @5 ; ___CPPdebugHook
далее:
lib.exe /def:mdmxsvr.def
lib.exe — из комплекта Visual C++. Перед запуском этой команды нужно установить переменные окружения для данной консоли вызовом bat-файла
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat, иначе lib.exe не найдет нужных ему dll.
Подключаем к проекту получившеюся mdmxsvr.lib
3. Lib-а съелась нормально, однако, при попытке добавить вызов функций из dll, ошибка
MainDlg.obj : error LNK2019: unresolved external symbol _MDMX_Close@0 ...
MainDlg.obj : error LNK2019: unresolved external symbol _MDMX_GetDMXTransmissions@0 ...
MainDlg.obj : error LNK2019: unresolved external symbol _MDMX_SetChannel@8 ...
MainDlg.obj : error LNK2019: unresolved external symbol _MDMX_OpenSerialDevice@8 ...
4. Правим def-файл, чтоб привести имена функций к тем, которые ищет VC:
LIBRARY MDMXSVR.DLL
EXPORTS
MDMX_OpenSerialDevice@8 = MDMX_OpenSerialDevice @1 ; MDMX_OpenSerialDevice
MDMX_SetChannel@8 = MDMX_SetChannel @2 ; MDMX_SetChannel
MDMX_GetDMXTransmissions@0 = MDMX_GetDMXTransmissions @3 ; MDMX_GetDMXTransmissions
MDMX_Close@0 = MDMX_Close @4 ; MDMX_Close
пересоздаем lib-у
lib.exe /def:mdmxsvr.def
заглядываем внутрь lib-ы, убеждаемся, что там присутствуют искомые _MDMX_Close@0, _MDMX_SetChannel@8 и т.д.
Компилируем... Все OK.
... << RSDN@Home 1.1.4 beta 6 rev. 431>>