:델파이 2007 EXE 및 C++ DLL : 디버그 출력 : 027D5009 과거를 수정 027D4FF8에서 힙 블록이 9 개 프로세스의 크기를 요청
function getOfficialCardNumber(): WideString ; cdecl; external 'idcapp.dll';
을하지만, 몇 초 후 (에
77BD37D6 C6055562C17700 mov byte ptr [$77c16255],$00
을이 말한다 : 디버그 구성은)는 여기 중지
Debug Output: Heap block at 027D4FF8 modified at 027D5009 past requested size of 9 Process PreglediZaDom.exe (23672)
언급 기능 WA를 C++로 작성된 (Visual Studio)
WideString을 PWideString 및 다른 것으로 변경하려고 시도했지만 성공하지 못했습니다. 누구든지 문제가 될 수있는 것을 알고 있습니까?
Public Function pisBstrToString(bstr) As String
Dim bArray() As Integer
Dim longArray() As Long
Dim str As String
Dim i As Integer
bArray = pisStringToBArray(bstr)
longArray = pisBArrayToLongArray(bArray)
str = ""
For i = 1 To UBound(longArray)
If longArray(i) > 0 And longArray(i) < 256 Then
str = str & Chr(longArray(i))
Else
str = str & pisLongToUnichar(longArray(i))
End If
Next i
pisBstrToString = str
End Function
내가 지금 C++에서 기록 된 기능은 다음과 같이 내 보낸 알고 :
BSTR _stdcall getOfficialCardNumber()
아마도 번역이 잘못 되었습니까? 함수는 C 또는 C++ 헤더에서 어떻게 선언됩니까? 또는 VB6에서 함수가 어떻게 선언됩니까? –
C++ 헤더가 없습니다 (dll은 다른 사람이 작성한 것입니다). 공용 선언 함수 getOfficialCardNumber Lib "C : \ WINDOWS \ system32 \ idcapp.dll"() VB6에서 문자열이 선언되어 있으므로 –
VB6에서'cdecl'을 처리 할 수 없으므로'stdcall'이어야합니다. 결과는 실제로 'WideString'입니다. –