Hallo, ich versuche gerade, eine VC++ 6-Funktion in VB6 aufzurufen.
Dabei sieht die VC++-Funktion, an die ich ran will, so aus:
Da ich schon vernommen hab, dass die char* * ein Problem sind, hab ich darum nun noch eine Funktion gebastelt:
Dies ist auch in eine passende Headerdatei so eingefügt worden:
Dabei scheint size_t ein typedef für Integer zu sein und size_t ist definitiv ein Typedef auf unsigned int.
Das versuche ich nun, innerhalb von VB6 zu verwenden:
Tja, beim Ausführen von dem guten Stück schmiert mir Visual Studio sang- und klanglos einfach weg. Kann mir da zufällig jemand bei helfen? Bin für jede Hilfe dankbar.
Greetings.
Dabei sieht die VC++-Funktion, an die ich ran will, so aus:
Code:
size_t _stdcall iconv (iconv_t icd,
ICONV_CONST char* * inbuf, size_t *inbytesleft,
char* * outbuf, size_t *outbytesleft)
{
conv_t cd = (conv_t) icd;
if (inbuf == NULL || *inbuf == NULL)
return cd->lfuncs.loop_reset(icd,outbuf,outbytesleft);
else
return cd->lfuncs.loop_convert(icd,
(const char* *)inbuf,inbytesleft,
outbuf,outbytesleft);
}
Code:
size_t _stdcall iconv_aufruf(iconv_t cd,LPSTR into, size_t *intoSize,LPSTR out, size_t *outSize)
{
size_t returnValue = iconv(cd,&into,intoSize,&out,outSize);
return returnValue;
}
Code:
extern LIBICONV_DLL_EXPORTED size_t _stdcall iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
Das versuche ich nun, innerhalb von VB6 zu verwenden:
Code:
Option Explicit
Private Declare Function iconv_open Lib "C:\libiconv-1.9.2-src\src\iconv.dll" Alias "_libiconv_open@8" (ByVal tocode As String, ByVal fromcode As String) As Integer
Private Declare Function iconv Lib "C:\libiconv-1.9.2-src\src\iconv.dll" Alias "#2" (ByVal cd As Integer, ByVal inbuf As String, ByVal inbytesleft As Long, ByVal outbuf As String, ByVal outbytesleft As Long) As Long
Private Sub Form_Load()
Dim a As Integer
Dim testString As String
Dim testString2 As String
Dim laengeA As Long
Dim laengeB As Long
Dim ergebnis As Long
testString = "Hallo"
testString2 = ""
laengeA = Len(testString)
testString2 = Space$(laengeA)
a = iconv_open("UTF-16", "LATIN1")
ergebnis = iconv(a, testString, laengeA, testString2, Conversion.CLng(0))
testString = Trim$(testString)
testString2 = Trim$(testString2)
End Sub
Greetings.