Bara en liten notering, char i C är det samma som Byte i .NET, så du ska skicka in Byte, inte Char. Kan du C? En variant som jag är lite förtjust i är att du skapar ett till lib, fast den här gången i C++/CLI. Då kan du enkelt överbrygga problemet med att anropa "vanlig" c från .net och vice versa. Japp jag kan C men den dll:en som jag har är utan källkod så jag kan tyvärr inte gå in och skriva om i den. Dock så har jag ett program som rapporterar ut från DLL:en vad den får in. Så vad är det funktionen gör egentligen? Fungerar det inte? Om du får ut F i hexadecimalt så har ju funktionen tagit emot rätt data. Nej jag får ju inte in "F" i DLL:en jag får in "46" Alltså, får funktionen in "46464646" som en teckensträng? Om den får in 46464646 som hex är det ju korrekt då det blir F när det "tolkas" till ASCII. Är det så att det du vill göra inte fungerar, eller baserar du en slutsat på att det inte fungerar med hjälp av verktyget du använder för att kika in i funktionen?C DLL i VB.net
Hej!
Jag har en DLL skriven i C som jag ska prata med i VB.NET
Jag har definierat upp funktionen som följer
Public Declare Function Write Lib "test.dll" (<MarshalAs(UnmanagedType.LPArray)> ByVal Data() As Char, ByVal DataLen As Integer, ByVal Id As Integer) As Integer
Den ser så här ut i C dll:en
int write(unsigned char *Data, inte DataLen, int Id);
Mitt problem är att när jag skickar säg en sträng med "FFFF" så får DLL:en in "46464646" dvs jag får in charvärdet för F:en
Hur ska jag göra för att DLL:en ska få in F:en?
Många tack på förhand!
Sv: C DLL i VB.net
Sv:C DLL i VB.net
Vad vill du göra i C funktionen?
Och decimalvärdet för F är inte 46, utan 70. Menar du kanske att du får in 46 i Hexadecimal form? 46 hexadecimalt är 70 i decimalt och 70 i ASCII representationen är 'F'.Sv: C DLL i VB.net
Sv: C DLL i VB.net
Det är hexvärdet ja.Sv: C DLL i VB.net
Svårt att säga vad som kan vara fel, kan just nu inte komma på andra saker...Sv:C DLL i VB.net
Det är en DLL som jag tyvärr ej har källkod till, dock så har jag ett debug program till DLL:en som ger mig information om vad den får in till sig.
Så det blir något slags fel i teckenkodningen mellan vb.net och C och frågan är hur man säger till vb.net att skicka rätt teckenkodning till C? :)Sv: C DLL i VB.net
Ser inte riktigt problemet då en char i C och C++ egentligen enbart innehåller det numeriska värdet för tecken och betydelsen fås först då man gör något med detta värde (antingen skriver man ut det som en char eller som en decimal etc...).
Vad är det funktionen du anropar ska göra som den inte gör? Vad blir fel, förutom att du ser att den får in värdena FFFF i hexadecimal representation?