BCB5 und wsprintfW



  • Hallo Forum

    Ich erhalte beim kompilieren meines Quellcodes einen Fehler mit dem ich gar nichts anfangen kann.
    E2451 Undefined symbol 'wsprintfW_instead_use_StringCbPrintfW_or_StringCchPrintfW'

    Der Fehler bezieht sich auf die Zeile:

    wsprintfW(wsz1, L"FilterGraph %08x pid %08x", (DWORD*)pUnkGraph, GetCurrentProcessId());
    

    Kennt jemand das Problem?
    Forumsuche war erfolglos und google auch.

    Danke für jede Antwort.



  • Hallo

    die fehlermedlung besagt das wsprintfW nicht bekannt ist.
    Du hast das wohl falsch geschrieben, richtig muß es swprintf heißen, laut meiner BCB-Hilfe

    #include <stdio.h>
    int sprintf(char *buffer, const char *format[, argument, ...]);
    int swprintf(wchar_t *buffer, const wchar_t *format[, argument, ...]);

    bis bald
    akari



  • Danke für die schnelle Antwort.
    Die Header war bereits eingebunden.
    Ich habe es auch schon sprintf und swprintf versucht.
    Leider kommt immernoch die Fehlermeldung.
    bei sprintf:
    E2451 Undefined symbol 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA'

    bei swprintf:
    E2451 Undefined symbol 'swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW'

    harr

    Vielleicht liegt es daran, daß ich ein VisualStudio Projekt mit dem BCB Tool Visual C++ Project Conersation Utility konvertiert habe?

    Mfg Matthias



  • Hallo

    scheint etwas mit der Konvertierung zu tun haben, denn die Befehle StringCbPrintfA,... sind anscheinend WinAPI-Befehle
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/strings/stringreference/stringfunctions/stringcbprintf.asp

    eventuell hilft es ja, wenn du statt sprintf bzw. swprintf die vorgeschlagenen WinAPI-befehle nimmst.

    warum du aber die eigentlichen Funktionen nicht nutzen kannst, weiß ich nicht. Ist da irgend ein Makro aktiv?

    bis bald
    akari



  • Hmmm.. bei mir kompiliert deine Zeile fehlerfrei (auch ohne stdio). Vllt. könntest du mal ein wenig mehr Quelltext zeigen. Z.B. welche Header mit eingebunden werden.



  • Hallo Akari
    Danke für deine Tipps
    Die WinAPI Befehle soll/darf ich nicht nehmen.
    Ich habe die Zeile betreffende Zeile ausdokumentiert, eine kleine Änderung in einer anderen Methode und nun läuft es. Nun gibt mein Programm zwar nur leer ErrorMessages aus, das ist im Moment aber egal.
    Danke nochmals für deine Tipps.

    Mit den Makros bin ich mir nicht sicher. Wo kann ich nachprüfen welche Makros aktiv sind (verwende erst seit kurzem CBuilder)

    Mfg Matze



  • Hallo

    Mit den Makros bin ich mir nicht sicher. Wo kann ich nachprüfen welche Makros aktiv sind (verwende erst seit kurzem CBuilder)

    Makros bzw. Präcompiler-Symbole sind C++ Answisung wie

    #ifdef __BUILDING_THE_DLL
    #define __EXPORT_TYPE __export
    #else
    #define __EXPORT_TYPE __import
    #endif
    

    was für eine Beeinflußung des Quellcodes vor den Kompilieren sorgt.
    Deshalb meine Vermutuzng, das

    sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA
    

    ein Makro oder das Ergebnis eines Makros ist.
    Kannst ja mal mit Menü Suchen/In Dateien suchen nach einzelnen Teilen aus dem Ausdruck suchen lassen. Vielleicht findest du was.

    bis bald
    akari



  • Hallo @ all
    Hat sich erledigt. Der Fehler hatte mit der strsafe.h zu tun.
    siehe http://www.microsoft.com/germany/msdn/library/net/visualstudio/CLaufzeitbibliothekenSichern.mspx
    Trotzdem dank an alle.

    Mfg Matze


Anmelden zum Antworten