Problem mit Header Dateien



  • Ich habe folgendes unter VC++2005:

    /*
    Filename: message_box.hpp
    Date: 09.06.2007
    Description: creation of message boxes
    */
    
    #ifndef MESSAGE_BOX_HPP
    #define MESSAGE_BOX_HPP
    
    #include <windows.h>
    
    namespace Gui {
    
    	void mb(const TCHAR* message);
    
    	void mb(const TCHAR* caption, const TCHAR* message);
    
    	void mb_err(const TCHAR* message);
    
    	void mb(HWND h, const TCHAR* message);
    
    	void mb(HWND h, const TCHAR* caption, const TCHAR* message);
    
    	void mb_err(HWND h, const TCHAR* message);
    }
    
    #endif
    
    // provides implementation for 'message_box.hpp
    
    #include "message_box.hpp"
    
    using namespace Gui;
    
    void mb(const TCHAR* message) {
    	MessageBox(0, message, TEXT("Message"), MB_OK);
    }
    
    void mb(const TCHAR* caption, const TCHAR* message) {
    	MessageBox(0, message, caption, MB_OK);
    }
    
    void mb_err(const TCHAR* message) {
    	MessageBox(0, message, TEXT("Error"), MB_OK | MB_ICONERROR);
    }
    
    void mb(HWND h, const TCHAR* message) {
    	MessageBox(h, message, TEXT("Message"), MB_OK);
    }
    
    void mb(HWND h, const TCHAR* caption, const TCHAR* message) {
    	MessageBox(h, message, caption, MB_OK);
    }
    
    void mb_err(HWND h, const TCHAR* message) {
    	MessageBox(h, message, TEXT("Error"), MB_OK | MB_ICONERROR);
    }
    
    /* test - message_box */
    
    #include "message_box.hpp"
    
    int WINAPI WinMain(HINSTANCE hInstance, 
    				   HINSTANCE hPrevInstance, 
    				   LPSTR lpCmdLine, 
    				   int nShowCmd) 
    {
    	using namespace Gui;
    
    	mb(TEXT("hello world"));
    	mb(TEXT("information"), TEXT("unique"));
    	mb_err(TEXT("wrong message"));
    	return 0;
    }
    

    Endeffekt:

    Error 1 error LNK2019: unresolved external symbol "void __cdecl Gui::mb_err(wchar_t const *)" (?mb_err@Gui@@YAXPB_W@Z) referenced in function _WinMain@16 unit_test.obj
    Error 2 error LNK2019: unresolved external symbol "void __cdecl Gui::mb(wchar_t const *,wchar_t const *)" (?mb@Gui@@YAXPB_W0@Z) referenced in function _WinMain@16 unit_test.obj
    Error 3 error LNK2019: unresolved external symbol "void __cdecl Gui::mb(wchar_t const *)" (?mb@Gui@@YAXPB_W@Z) referenced in function _WinMain@16 unit_test.obj
    Error 4 fatal error LNK1120: 3 unresolved externals C:\Documents and Settings\Zdravko\My Documents\Visual Studio 2005\Projects\gui_fundaments\Debug\gui_fundaments.exe 1

    Warum?


  • Mod

    Ist die CPP Datei wirklich in das Projekt eingefügt worden?
    Sind alle CPP Dateien garantiert mit den selben Compiler Optionen kompiliert?



  • Martin Richter schrieb:

    Ist die CPP Datei wirklich in das Projekt eingefügt worden?
    Sind alle CPP Dateien garantiert mit den selben Compiler Optionen kompiliert?

    Ja!



  • Und? Was machen wir jetzt? 😕


  • Mod

    Deine Funktionen der cpp Datei liegen nicht im Namespace Gui!
    Muss sein:

    #include "message_box.hpp" 
    
    namespace Gui
    {
    void mb(const TCHAR* message) { 
    	MessageBox(0, message, TEXT("Message"), MB_OK); 
    } 
    [snip]
    }
    


  • Vielen Dank! 🙂


Anmelden zum Antworten