Nicht definierte referenc (Code::Blocks)
-
Hallo zusammn !
Ich habe Code zu initialisieren von Open/SaveFile Dialoge:#include <windows.h> #include <commdlg.h> void PopFileInitialize (HWND hwnd) { static TCHAR szFilter[] = TEXT ("Textdateien (*.TXT)\0*.txt\0") \ TEXT ("ASCII-Dateien (*.ASC)\0*.asc\0") \ TEXT ("Alle Dateien (*.*)\0*.*\0\0") ; ofn.lStructSize = sizeof (OPENFILENAME) ; ofn.hwndOwner = hwnd ; ofn.hInstance = NULL ; ofn.lpstrFilter = szFilter ; ofn.lpstrCustomFilter = NULL ; ofn.nMaxCustFilter = 0 ; ofn.nFilterIndex = 0 ; ofn.lpstrFile = NULL ; // Bei Öffnen bzw. Schließen gesetzt ofn.nMaxFile = MAX_PATH ; ofn.lpstrFileTitle = NULL ; // Bei Öffnen bzw. Schließen gesetzt ofn.nMaxFileTitle = MAX_PATH ; ofn.lpstrInitialDir = NULL ; ofn.lpstrTitle = NULL ; ofn.Flags = 0 ; // Bei Öffnen bzw. Schließen gesetzt ofn.nFileOffset = 0 ; ofn.nFileExtension = 0 ; ofn.lpstrDefExt = TEXT ("txt") ; ofn.lCustData = 0L ; ofn.lpfnHook = NULL ; ofn.lpTemplateName = NULL ; } BOOL PopFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) { ofn.hwndOwner = hwnd ; ofn.lpstrFile = pstrFileName ; ofn.lpstrFileTitle = pstrTitleName ; ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT ; return GetOpenFileName(&ofn) ; } BOOL PopFileSaveDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) { ofn.hwndOwner = hwnd ; ofn.lpstrFile = pstrFileName ; ofn.lpstrFileTitle = pstrTitleName ; ofn.Flags = OFN_OVERWRITEPROMPT ; return GetSaveFileName (&ofn) ; } BOOL PopFileRead (HWND hwndEdit, PTSTR pstrFileName) { BYTE bySwap ; DWORD dwBytesRead ; HANDLE hFile ; int i, iFileLength, iUniTest ; PBYTE pBuffer, pText, pConv ; // Datei öffnen if (INVALID_HANDLE_VALUE == (hFile = CreateFile (pstrFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL))) return FALSE ; // Dateigröße in Bytes ermitteln, zwei Bytes für ein abschließendes NUL // dazuaddieren (Unicode!), Speicher belegen iFileLength = GetFileSize (hFile, NULL) ; pBuffer =(PBYTE) malloc (iFileLength + 2) ; // Dateiinhalt lesen und zwei NUL-Zeichen anhängen ReadFile (hFile, pBuffer, iFileLength, &dwBytesRead, NULL) ; CloseHandle (hFile) ; pBuffer[iFileLength] = '\0' ; pBuffer[iFileLength + 1] = '\0' ; // Unicode-Text? iUniTest = IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_REVERSE_SIGNATURE ; if (IsTextUnicode (pBuffer, iFileLength, &iUniTest)) { pText = pBuffer + 2 ; iFileLength -= 2 ; if (iUniTest & IS_TEXT_UNICODE_REVERSE_SIGNATURE) { for (i = 0 ; i < iFileLength / 2 ; i++) { bySwap = ((BYTE *) pText) [2 * i] ; ((BYTE *) pText) [2 * i] = ((BYTE *) pText) [2 * i + 1] ; ((BYTE *) pText) [2 * i + 1] = bySwap ; } } // Speicher für eine eventuell notwendige Konvertierung belegen pConv = (PBYTE) malloc (iFileLength + 2) ; // Wenn das Editfenster nicht mit Unicode zurechtkommt, Konvertierung #ifndef UNICODE WideCharToMultiByte (CP_ACP, 0, (PWSTR) pText, -1, (LPSTR) pConv, (int) iFileLength + 2, NULL, NULL) ; // Wenn das Editfenster mit Unicode zurechtkommt, einfache Kopie #else lstrcpy ((PTSTR) pConv, (PTSTR) pText) ; #endif } else // ANSI-Text { pText = pBuffer ; // Speicher für eine eventuell notwendige Konvertierung belegen pConv = (PBYTE) malloc (2 * iFileLength + 2) ; // Wenn das Editfenster mit Unicode arbeitet, Konvertierung #ifdef UNICODE MultiByteToWideChar (CP_ACP, 0, pText, -1, (PTSTR) pConv, iFileLength + 1) ; // ANSI-Text, ANSI-Fenster: reine Kopie #else lstrcpy ((PTSTR) pConv, (PTSTR) pText) ; #endif } SetWindowText (hwndEdit, (PTSTR) pConv) ; free (pBuffer) ; free (pConv) ; return TRUE ; }
Beim kompilieren bekomme in die Zeilen 43 und 55 Fehlermeldung:
- undefined reference to GetOpenFileName
- undefined reference to GetSaveFileNameStruktur Variable "ofn" (OPENFILENAME)global deklariert.
Kann mir bitte jemand Helfen, wie ich die Fehler beheben kann ?
-
Äh, comdlg32.lib linken?
-
Gegen Comdlg32.lib linken.
So wie hier.
static TCHAR szFilter[] = TEXT ("Textdateien (*.TXT)\0*.txt\0") \ TEXT ("ASCII-Dateien (*.ASC)\0*.asc\0") \ TEXT ("Alle Dateien (*.*)\0*.*\0\0") ;
sieht aber auch falsch aus. Du versuchst 3 strings in einen zu packen, wie das "\" die strings erknüpft weiß ich nicht, aber der Compiler beschwert sich..
-
Wäre Comdlg32.lib nicht gelinkt, dann hätte ich ganz andere Fehlermeldung erhalten.EDIT//
@Hi & DarkShadow44: Danke für die Hilfe ! Tatsächlich comdlg32.lib war nicht gelinkt.
@DarkShadow44: Ich kenn mich schon mit IDE aus, wo und wie was einstellt, danke für den Link.Mist solche einfachere Fehler und ich komme nicht drauf, jetzt läuft wie geschmirt.