C-Code läuft in Swift nicht mehr.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Rabattcode für die heise MacDev 2020: Macoun20

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • C-Code läuft in Swift nicht mehr.

    Hallo,

    ich habe ein Objective-C-Programm geschrieben, welches C-Bibliotheken nutzt (odbc-Aufrufe). Die Funktionen nutzen Handles, also aPointer auf allocateten Speicher, sowie Pointer als Referenzen (quasi Pointer auf Pointer). Hier ist ein Beispiel einer Funktion:

    C-Quellcode

    1. BOOL Sql_DriverConnect(HENV* henv, HDBC* hdbc, char** error_msg) {
    2. SQLCHAR* ddd = "my connstr";
    3. SQLRETURN retCode = SQLDriverConnect(*hdbc, 0, ddd, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE) ;
    4. if ( ! retcode(retCode, *henv, *hdbc, NULL, error_msg) ) {
    5. SQLFreeConnect(*hdbc);
    6. return FALSE;
    7. }
    8. return TRUE;
    9. }
    Der Code läuft klaglos sowohl als reines C-Commandlinetool als auch als Cocoa-Programm. Wenn ich aber das ganze in ein Swift-Programm einbauen will, läuft der gleiche Code nicht mehr, obwohl die Handles alle ordnungsgemäß initialisiert werden. Das Schlimmste ist, dass bei schrittweiser Ausführung das Programm bei der Funktion SQLDriverConnect einfach hängt, es kommt kein Crash, keine Fehlermeldung, nur der kreisende Cursor. Irgendwas baut Swift am Speicher um, so dass der Code irgendwo abstürzt oder hängt, anders kann ich mir das nicht erklären.
    Für Erklärungsversuche oder Ideen wäre ich sehr dankbar.

    fiveyears