C als Interface für ander Programmiersprache -> Linkerproblem bei DLL-Aufrufen



  • Hallo,

    folgendes Problem:

    Ich habe eine DLL die nur mit C kompatible ist (da in der verwendeten Sprache Datentypen wie pointer, long, etc. nicht verfügbar sind).
    Allerdings gibt es dort eine C-API, mit deren Hilfe man auf C-Code zugreifen kann.

    Aus beiden Programmstücken werden dann Objektdateien erstellt. Diese müssten dann gelinkt werden.
    Gelinkt wird mit dem C-Compiler (VC++6).

    Im C-Programm öffne und behandle ich die DLL mit FreeLibrary(), GetProcAdress(), LoadLibraray()

    Wenn ich das reine C-Programm compiliere und linke funktioniert alles wie gewünscht.
    (Linker: link /out:CAPI.exe C_API.obj
    Compilerbatch: cl /c /MD /I D:\read\include\ "%1" )

    Füge ich jetzt das Programm aus der anderen Sprache beim linken hinzu (Linkoptionen : link /out:test.exe /Entry:_xppStartup /SUBSYSTEM:CONSOLE C_API.obj Xbase.obj Xpprt0.lib )
    werden auf einmal die die Funktionen FreeLibrary(), GetProcAdress(), LoadLibraray() nicht mehr gefunden.

    Fehlermeldung:

    C_API.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__FreeLibrary@4
    C_API.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__GetProcAddress@8
    C_API.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__LoadLibraryA@4
    MSVCRT.lib(bsku.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __imp__GetUserDefaultLangID@0
    test.exe : fatal error LNK1120: 4 unaufgeloeste externe Verweise

    Muss ich vielleicht noch eine lib beim linken angeben? Ich hoffe es kann jemand helfen...



  • Dieser Thread wurde von Moderator/in Shade Of Mine aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten