Suchergebnisse
Suchergebnisse 1-13 von insgesamt 13.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
-
Du inkludierst stdafx.h zweimal. Einmal aus deinem Projekt (Zeile 13) und einmal aus dem Beispiel (Zeile 16). Entferne Zeile 13 - das sollte den Fehler mit der Neudeklaration lösen. Das GIT-Repository für die Library ist unvollständig - daher kann ich das Problem hier nicht nachstellen. Es fehlen die Dateien für C-Quellcode (2 Zeilen) Edit: CMake muss durchlaufen. Dann sind auch alle Dateien vorhanden.
-
Mit den zusätzlichen Dateien läuft der Build bei mir durch, mal abgesehen von Linkerfehlern, weil ich mir das Binary der Library nicht erstellt habe. Folgendes habe ich geändert: C-Quellcode (9 Zeilen) Datei stdafx.h (aus dem Projekt, nicht aus dem Ordner WIN32) C-Quellcode (11 Zeilen) Der vorkompilierte Header ist manchmal nervig - stackoverflow.com/questions/12…h-from-the-root-directory: Zitat: „When compiling a .cpp file that uses a PCH, VS expects the first non-comment/whitespace text to be …
-
Um deine "intermediate"-DLL wie anfangs gewünscht zu erstellen, brauchst du die Datei libfreespace.lib. Binde sie im C++-Projekt unter Linker --> Eingabe --> zusätzliche Abhängigkeiten ein (einfach libfreespace.lib eintragen) und gib das entsprechende Verzeichnis bei Linker --> Allgemein --> zusätzliche Bibliotheksverzeichnisse an. Tatsächlich ist es sinnvoller, der gesamten Code der Zwischen-DLL (hier: den Inhalt von TestFunction) direkt in VB.NET zu schreiben ( @jvbsl ). Dafür erstellst du dir…
-
Ja, die Bibliotheken sind Teil des DDK.
-
Zu deinem Bild: Ja, genau dort. Im DropDown-Menü auf "Bearbeiten" und LIBFREESPACE_EXPORTS unten an die Liste anfügen. Einfach als "Wort" in eine neue Zeile, so wie es hier steht: vb-paradise.de/index.php/Attachment/38501/ Bitte die Eigenschaften nur im freespace-Projekt ändern. Das AllBuild-Projekt bindet das freespace-Projekt als Abhängigkeit ein, muss aber ein "Hilfsprogramm" bleiben. Ansonsten versucht er eine DLL für AllBuild zu erzeugen, was mangels Quellcode bzw. DllMain nicht funktionier…
-
Zitat von chris_2091: „über 500 Syntaxfehler“ Das liegt oft nicht am Code, sondern an irgendeinem Include, den er nicht findet. Manchmal ist auch nur die Reihenfolge falsch, wie schon am Anfang festgestellt. Schau mal durch alle Dateien durch und suche rot unterkringelte #includes. Überprüfe auch deinen Include-Path. Zitat von chris_2091: „Wenn man in CMake bei LIBFREESPACE_LIB_TYPE SHARED hinschreibt muss man nicht die ganzen Projekt-Einstellungen ändern.“ Stimmt - habe ich mal gemacht, läuft a…
-
Die CallingConvention der Library ist cdecl, Standardeinstellung von DllImport ist aber stdcall. Das muss geändert werden - danke @jvbsl für den Hinweis. Mit der neuen Signatur ist der Aufruf dann: VB.NET-Quellcode (4 Zeilen) Wenn FreespaceDeviceId sowieso nur ein int ist, fällt dessen Deklaration schonmal weg. Die Größe des anzulegenden Speichers ist dann IntPtr.Size (mal Anzahl der items, bei dir 1).
-
Kurze Antwort: Ein Union definierst du per StructLayout mit LayoutKind = Explicit unter Angabe der Offsets. Du brauchst nur die wirklich verwendeten Strukturen zu deklarieren. Das Array Definierst du mit MarshalAs und UnmanagedType = LPArray oder ByValArray mit Parameter SizeConst = 44. Achtung: Bei mir sind die Member von freespace_message uint8_t, nicht uint16_t - bitte kontrollieren. Außerdem: uint8_t ist Byte, int8_t ist SByte, uint16_t ist UShort, int16_t ist Short. Lange Antwort: Angenomme…
-
Also im deutschen Visual Studio steht da: Zitat: „Die m-Variable wird übergeben, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten. Stellen Sie sicher, dass die Struktur oder alle Verweismember vor der Verwendung initialisiert werden. “ Soll heißen: Initialisiere das Array, denn es ist ein sogenannter Verweismember (Arrays sind Referenztypen, kein Werttypen). VB.NET-Quellcode (1 Zeile)
-
Edit: Tests haben gezeigt, dass der Code in diesem Post nicht funktioniert. (Versteckter Text)
-
Zitat von chris_2091: „TypeLoadException“ Ok, das ist eine Einschränkung des Frameworks, wie ich grade lese. Wieder was gelernt. In diesem Fall muss das Union aufgesplittet werden: (Versteckter Text) Möglicherweise geht das auch über Vererbung, um das Kopieren der FreespaceMessage-Member zu vermeiden. Probiers mal aus: (Versteckter Text) In jedem Fall brauchst du aber je eine Überladung für jede Struktur, damit du die native Funktion mit dem passenden Typ aufrufen kannst. Vergiss bei der Variant…
-
Sorry für die späte Antwort - das Forum zeigt Editierungen nicht als neue Beiträge an, deshalb habe ich erst den jetzigen Beitrag gesehen. Zitat von chris_2091: „DataModeControlV2Request nimmt 24 Bytes ein, daher muss die nächste Struktur auf 32 usw.“ Nein - alle Member einer C-Union fangen bei derselben Startadresse an. Siehe stackoverflow.com/questions/9834395/memory-layout-c-union: Zitat: „Every member of a union has the same starting address; different members may have different sizes. The s…
-
Zitat von chris_2091: „Weiß jemand woran das liegen könnte bzw. wie man die Schleife so gestaltet, sodass jede zweite Nachricht gelesen wird?“ Das liegt vermutlich an der Überlastung des Sensors (zu oft in zu kurzer Zeit abgefragt). Verlangsame testweise die Abfrageschleife (Thread.Sleep, siehe oben). "Jede zweite Nachricht" liest du, indem du alle Nachrichten liest und bei der Verarbeitung jede zweite weglässt. Wenn du die Lust an Interop noch nicht verloren hast, kannst du auch die asynchrone …