|
VC시러 님이 쓰신 글 :
: VC 용 dll 을 빌더용으로 변환 하려고 하는데요...
:
: 게시판에 dll 변환 관련 글들에 나와있는 모든 방법을 다 써봤는데
:
: 계속 Linker Error 가 발생합니다.
:
: 이 dll 자체가 빌더에서는 사용이 불가능 한건지..
:
: 도저히 알수가 없어서요..
:
: 고수님들 도움 좀 부탁드립니다.
:
: 이게 그 dll 과 헤더 파일입니다.
tdump -ee hsclientapi.dll hsclientapi.lst 에 대한 결과는 아래와 같습니다.
--------------------------------------------------------------
Turbo Dump Version 5.0.16.12 Copyright (c) 1988, 2000 Inprise Corporation
Display of File HSCLIENTAPI.DLL
EXPORT ord:0001='HSAddCam'
EXPORT ord:0002='HSAlarmUse'
EXPORT ord:0003='HSClassClose'
EXPORT ord:0004='HSClassOpen'
EXPORT ord:0006='HSConnect'
EXPORT ord:0005='HSConnect1'
EXPORT ord:0007='HSDisConnect'
EXPORT ord:0008='HSGetAlarmInfo'
EXPORT ord:0009='HSGetMaxCamera'
EXPORT ord:0010='HSGetRecvImage'
EXPORT ord:0011='HSGetRelay'
EXPORT ord:0012='HSGetRelayValue'
EXPORT ord:0013='HSGetSignalLoss'
EXPORT ord:0014='HSPTZSetting'
EXPORT ord:0015='HSRelay'
EXPORT ord:0016='HSSchClose'
EXPORT ord:0017='HSSchConnect'
EXPORT ord:0018='HSSchDayEventList'
EXPORT ord:0019='HSSchDisConnect'
EXPORT ord:0020='HSSchGetDayEventList'
EXPORT ord:0021='HSSchGetImage'
EXPORT ord:0022='HSSchGoto'
EXPORT ord:0023='HSSchInitialize'
EXPORT ord:0024='HSSchPause'
EXPORT ord:0025='HSSchPlay'
EXPORT ord:0026='HSSchReverse'
EXPORT ord:0027='HSSchSetEventFunc'
EXPORT ord:0028='HSSchSetHwnd'
EXPORT ord:0029='HSSchSetPlaySpeed'
EXPORT ord:0030='HSSchStop'
EXPORT ord:0031='HSSearch'
EXPORT ord:0032='HSSearchEnd'
EXPORT ord:0033='HSSetConfig'
EXPORT ord:0034='HSSetDisConnect'
EXPORT ord:0035='HSSetRelay'
EXPORT ord:0036='HSSetSignal'
EXPORT ord:0037='HSSoundUse'
--------------------------------------------------------------
문제없이 잘 붙여 사용하실 수 있습니다.
정적으로 붙여쓰실거면 impdef로 dll에서 def파일을 불러오신후에 에디팅하시고
implib로 dll를 생성하십시오. 그후 lib를 프로젝트에 붙여사용하시면 잘 됩니다... ^^
1. impdef *.def *.dll (이러면 .def파일이 생성되겠죠)
2. edit *.def 로 파일을 오픈하여 수정을 하셔야합니다. 그 내용은 아래와 같이...
--------------------------------------------------------------
// 수정전
LIBRARY HSCLIENTAPI.DLL
EXPORTS
HSAddCam @1 ; HSAddCam
HSAlarmUse @2 ; HSAlarmUse
HSClassClose @3 ; HSClassClose
HSClassOpen @4 ; HSClassOpen
HSConnect @6 ; HSConnect
HSConnect1 @5 ; HSConnect1
HSDisConnect @7 ; HSDisConnect
HSGetAlarmInfo @8 ; HSGetAlarmInfo
HSGetMaxCamera @9 ; HSGetMaxCamera
HSGetRecvImage @10 ; HSGetRecvImage
HSGetRelay @11 ; HSGetRelay
HSGetRelayValue @12 ; HSGetRelayValue
HSGetSignalLoss @13 ; HSGetSignalLoss
HSPTZSetting @14 ; HSPTZSetting
HSRelay @15 ; HSRelay
HSSchClose @16 ; HSSchClose
HSSchConnect @17 ; HSSchConnect
HSSchDayEventList @18 ; HSSchDayEventList
HSSchDisConnect @19 ; HSSchDisConnect
HSSchGetDayEventList @20 ; HSSchGetDayEventList
HSSchGetImage @21 ; HSSchGetImage
HSSchGoto @22 ; HSSchGoto
HSSchInitialize @23 ; HSSchInitialize
HSSchPause @24 ; HSSchPause
HSSchPlay @25 ; HSSchPlay
HSSchReverse @26 ; HSSchReverse
HSSchSetEventFunc @27 ; HSSchSetEventFunc
HSSchSetHwnd @28 ; HSSchSetHwnd
HSSchSetPlaySpeed @29 ; HSSchSetPlaySpeed
HSSchStop @30 ; HSSchStop
HSSearch @31 ; HSSearch
HSSearchEnd @32 ; HSSearchEnd
HSSetConfig @33 ; HSSetConfig
HSSetDisConnect @34 ; HSSetDisConnect
HSSetRelay @35 ; HSSetRelay
HSSetSignal @36 ; HSSetSignal
HSSoundUse @37 ; HSSoundUse
--------------------------------------------------------------
위의 내용을 네이밍때문에 일일이 바꿔주셔야 합니다. 아래와 같이...
--------------------------------------------------------------
// 수정후
LIBRARY HSCLIENTAPI.DLL
EXPORTS
_HSAddCam = HSAddCam
_HSAlarmUse = HSAlarmUse
_HSClassClose = HSClassClose
_HSClassOpen = HSClassOpen
_HSConnect = HSConnect
_HSConnect1 = HSConnect1
_HSDisConnect = HSDisConnect
_HSGetAlarmInfo = HSGetAlarmInfo
_HSGetMaxCamera = HSGetMaxCamera
_HSGetRecvImage = HSGetRecvImage
_HSGetRelay = HSGetRelay
_HSGetRelayValue = HSGetRelayValue
_HSGetSignalLoss = HSGetSignalLoss
_HSPTZSetting = HSPTZSetting
_HSRelay = HSRelay
_HSSchClose = HSSchClose
_HSSchConnect = HSSchConnect
_HSSchDayEventList = HSSchDayEventList
_HSSchDisConnect = HSSchDisConnect
_HSSchGetDayEventList = HSSchGetDayEventList
_HSSchGetImage = HSSchGetImage
_HSSchGoto = HSSchGoto
_HSSchInitialize = HSSchInitialize
_HSSchPause = HSSchPause
_HSSchPlay = HSSchPlay
_HSSchReverse = HSSchReverse
_HSSchSetEventFunc = HSSchSetEventFunc
_HSSchSetHwnd = HSSchSetHwnd
_HSSchSetPlaySpeed = HSSchSetPlaySpeed
_HSSchStop = HSSchStop
_HSSearch = HSSearch
_HSSearchEnd = HSSearchEnd
_HSSetConfig = HSSetConfig
_HSSetDisConnect = HSSetDisConnect
_HSSetRelay = HSSetRelay
_HSSetSignal = HSSetSignal
_HSSoundUse = HSSoundUse
--------------------------------------------------------------
3. 그후에 implib *.lib *.def (이때 꼭 수정된 def파일로 lib를 생성함...나중에 플젝에 붙여서 사용해야 하기 때문에)
4. 그럼 lib가 만들어 집니다.
5. 해당 app가 있는 폴더에 dll/lib/h를 카피합니다.
6. 해당 app(플젝)에서 lib를 추가합니다.
7. 이젠 app내에서 사용하시면 됩니다. ^^;
변경하는 과정이 꽤 복잡하죠...
도움이 되셨으면 좋겠네요...
PS: 동적으로 사용하실땐 LoadLibrary로 부르시면 되는데 문제는 네이밍때문에 일일이 함수이름을 확인하셔야 하는 작업을 수반하셔야 합니다. (.. )('' )( '')( ..) 일일이 기억을 하고 있지 못해서 더 이상은...흐흐흐...용서를~
|