Minimale Win32 Anwendung von MinGW nach VS2010: LNK1104: Datei "LIBC.lib" kann nicht geöffnet werden.



  • Hallo,

    ich habe einen minimalcode, der mir ein Win32 Anwendungsgrundgerüst mit unsichtbarem Hauptfenster macht.

    Unter MinGW läuft das auch ganz famos. Wenn ich allerdings versuche, es mit VS2010 zu kompilieren, erhalte ich den Fehler
    LNK1104: Datei "LIBC.lib" kann nicht geöffnet werden.

    Durch ein bißchen Googlen habe ich herausgefunden, dass es diese libc.lib seit VS2008 nicht mehr gibt und die Win32-Anwendung dadurch eine etwas andere Struktur hat.

    Daher meine Frage:
    Was muss ich an diesem Code ändern, damit VS2010 ihn mit den neuen libraries zu einer funktionierenden win32-Anwendung linken kann?

    #include <iostream>
    #include <windows.h>
    #include <cstdlib>
    
    const WCHAR* AppTitle=L"Hello";
    
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
    
    int WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
    {
      WNDCLASS wc;
      HWND hwnd;
      MSG msg;
    
      wc.style=CS_HREDRAW | CS_VREDRAW;
      wc.lpfnWndProc=WindowProc;
      wc.cbClsExtra=0;
      wc.cbWndExtra=0;
      wc.hInstance=hInst;
      wc.hIcon=LoadIcon(NULL,IDI_WINLOGO);
      wc.hCursor=LoadCursor(NULL,IDC_ARROW);
      wc.hbrBackground=(HBRUSH)COLOR_WINDOWFRAME;
      wc.lpszMenuName=NULL;
      wc.lpszClassName=AppTitle;
    
      if (!RegisterClass(&wc))
        return 0;
    
      hwnd = CreateWindow(AppTitle,AppTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,CW_USEDEFAULT,100,100,
        NULL,NULL,hInst,NULL);
    
      if (!hwnd)
        return EXIT_FAILURE;
      ShowWindow(hwnd, SW_HIDE);
      UpdateWindow(hwnd);
    
      while (GetMessage(&msg,NULL,0,0) > 0)
      {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
      }
    
      return EXIT_SUCCESS;
    }
    
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
    {
      switch (msg)
      {
        case WM_PAINT:
        {
          PAINTSTRUCT ps;
          HDC dc;
          RECT r;
          GetClientRect(hwnd,&r);
          dc=BeginPaint(hwnd,&ps);
          DrawText(dc,L"Hello, World",-1,&r,DT_WORDBREAK|DT_CENTER|DT_VCENTER);
          EndPaint(hwnd,&ps);
          break;
        }
    
        case WM_DESTROY:
          PostQuitMessage(0);
          break;
    
      case WM_CLOSE:
          std::exit(0);
          break;
    
        default:
          return DefWindowProc(hwnd, msg, wparam, lparam);
      }
      return 0;
    }
    

    Philipp



  • Ich vermute mal dass Du kein *neues* Projekt angelgt hast, sondern ein altes Upgegradet hast, oder?
    Entferne halt die LIBS, die es nicht mehr gibt aus Deinen Projekteinstellungen, dann mekert auch niemand, wenn es diese nicht gibt...



  • Hi!

    Ich habe überhaupt kein "Projekt" angelegt, da ich nicht Visual "Studio" benutze, sondern nur cl und link von Visual C++2010 um mit nmake ein Makefile-Projekt zu übersetzen. Daher kann ich mit "Projekteinstellungen" garnichts anfangen, der Hund muss irgendwo in den Compiler- oder Linkersettings begraben liegen.

    Hier die entsprechende Stelle des Makefiles:

    CC            = cl
    CXX           = cl
    DEFINES       = -DUNICODE -DQT_LARGEFILE_SUPPORT -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN
    CFLAGS        = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -W3 $(DEFINES)
    CXXFLAGS      = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -GR -EHsc -W3 -w34100 -w34189 $(DEFINES)
    INCPATH       = -I"include\simpleini"
    LINK          = link
    LFLAGS        = /NOLOGO /INCREMENTAL:NO /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:"release\scs.intermediate.manifest" /VERSION:1.00
    LIBS          = Ws2_32.lib release\scs_resource.res
    

    Wo ist da festgelegt, dass gegen lic.lib gelinkt werden soll???

    Philipp



  • Das ist vermutlich nicht das ganze makefile...



  • Jochen Kalmbach schrieb:

    Das ist vermutlich nicht das ganze makefile...

    Nein, aber der Rest ist eigentlich nur noch das Festlegen der Rules, welche Objects von welchen Dateien abhängen.

    Aber gut, der Vollständigkeit halber:

    #############################################################################
    # Makefile for building: scs
    # Generated by qmake (2.01a) (Qt 4.6.3) on: Fr 22. Okt 13:27:10 2010
    # Project:  scs.pro
    # Template: app
    #############################################################################
    
    ####### Compiler, tools and options
    
    CC            = cl
    CXX           = cl
    DEFINES       = -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN
    CFLAGS        = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -W3 $(DEFINES)
    CXXFLAGS      = -nologo -Zm200 -Zc:wchar_t- -O2 -MD -GR -EHsc -W3 -w34100 -w34189 $(DEFINES)
    INCPATH       = -I"include\simpleini"
    LINK          = link
    LFLAGS        = /NOLOGO /INCREMENTAL:NO /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:"release\scs.intermediate.manifest" /VERSION:1.00
    LIBS          = Ws2_32.lib /LIBPATH:lib/win32 lib/win32\FSUIPC_User.lib release\scs_resource.res 
    QMAKE         = c:\Qt\qt-4.6.3-msvc\bin\qmake.exe
    IDC           = c:\Qt\qt-4.6.3-msvc\bin\idc.exe
    IDL           = midl
    ZIP           = zip -r -9
    DEF_FILE      = 
    RES_FILE      = release\scs_resource.res
    COPY          = copy /y
    COPY_FILE     = $(COPY)
    COPY_DIR      = xcopy /s /q /y /i
    DEL_FILE      = del
    DEL_DIR       = rmdir
    MOVE          = move
    CHK_DIR_EXISTS= if not exist
    MKDIR         = mkdir
    INSTALL_FILE    = $(COPY_FILE)
    INSTALL_PROGRAM = $(COPY_FILE)
    INSTALL_DIR     = $(COPY_DIR)
    
    ####### Output directory
    
    OBJECTS_DIR   = release
    
    ####### Files
    
    SOURCES       = navcalc.cpp \
    
    ... usw ...
    OBJECTS       = release\navcalc.obj \
    ...usw...
    QMAKE_TARGET  = scs
    DESTDIR        = FS\scs\ #avoid trailing-slash linebreak
    TARGET         = scs.exe
    DESTDIR_TARGET = FS\scs\scs.exe
    
    ####### Implicit rules
    
    .SUFFIXES: .c .cpp .cc .cxx
    
    {.}.cpp{release\}.obj::
    	$(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<<
    	$<
    <<
    
    {.}.cc{release\}.obj::
    	$(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<<
    	$<
    <<
    
    {.}.cxx{release\}.obj::
    	$(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<<
    	$<
    <<
    
    {.}.c{release\}.obj::
    	$(CC) -c $(CFLAGS) $(INCPATH) -Forelease\ @<<
    	$<
    <<
    
    ####### Build rules
    
    first: all
    all: Makefile.Release $(DESTDIR_TARGET)
    
    $(DESTDIR_TARGET): $(OBJECTS) release\scs_resource.res
    	$(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<< 
    	  $(OBJECTS) $(LIBS)
    <<
    	mt.exe -nologo -manifest "release\scs.intermediate.manifest" -outputresource:$(DESTDIR_TARGET);1
    
    release\scs_resource.res: scs_resource.rc
    	rc $(DEFINES) -fo release\scs_resource.res scs_resource.rc
    
    qmake:  FORCE
    	@$(QMAKE) -win32 -o Makefile.Release scs.pro
    
    dist:
    	$(ZIP) scs.zip $(SOURCES) $(DIST) scs.pro c:\Qt\qt-4.6.3-msvc\mkspecs\qconfig.pri c:\Qt\qt-4.6.3-msvc\mkspecs\features\qt_functions.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\qt_config.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\exclusive_builds.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\default_pre.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\default_pre.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\release.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\debug_and_release.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\default_post.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\default_post.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\build_pass.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\rtti.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\exceptions.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\warn_on.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\windows.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\stl.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\shared.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\embed_manifest_exe.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\embed_manifest_dll.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\win32\thread_off.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\resources.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\uic.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\yacc.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\lex.prf c:\Qt\qt-4.6.3-msvc\mkspecs\features\include_source_dir.prf  RESOURCES FORMS IMAGES YACCSOURCES YACCSOURCES LEXSOURCES 
    
    clean: compiler_clean 
    	-$(DEL_FILE) release\navcalc.obj 
    ...usw...
    	-$(DEL_FILE) release\scs.intermediate.manifest FS\scs\scs1.exp
    	-$(DEL_FILE) release\scs_resource.res
    
    distclean: clean
    	-$(DEL_FILE) $(DESTDIR_TARGET)
    	-$(DEL_FILE) Makefile.Release
    
    check: first
    
    compiler_rcc_make_all:
    compiler_rcc_clean:
    compiler_uic_make_all:
    compiler_uic_clean:
    compiler_image_collection_make_all: qmake_image_collection.cpp
    compiler_image_collection_clean:
    	-$(DEL_FILE) qmake_image_collection.cpp
    compiler_yacc_decl_make_all:
    compiler_yacc_decl_clean:
    compiler_yacc_impl_make_all:
    compiler_yacc_impl_clean:
    compiler_lex_make_all:
    compiler_lex_clean:
    compiler_clean: 
    
    ####### Compile
    
    release\navcalc.obj: navcalc.cpp navcalc.h
    ..usw...
    
    ####### Install
    
    install:   FORCE
    
    uninstall:   FORCE
    
    FORCE:
    


  • Und Du bindest ja noch andere LIBs ein, die auch wieder eine Import-LIB mitbringen können... da würde ich mal suchen (z.B. FSUIPC_User.lib; oder auch andere).
    Alternativ solltet Du mal das /VERBOSE im Linker angeben, damit Du siehst welche LIBs er sich WARUM anzieht....



  • Ah super, die Information hat mir gefehlt.

    So, weiter im Text: Ich habe jetzt eine 50 Bildschirmseiten lange Ausgabe 😞
    Die habe ich mal nach "libc" durchsucht.
    Dabei finde ich genau einen Treffer, nämlich "Datei "LIBC.lib" kann nicht geöffnet werden." Duh!

    Und wie finde ich jetzt heraus, wer die libc.lib angefordert hat?

    Die Zeilen unmittelbar davor lauten

    __crt_debugger_hook gefunden.
    In "MSVCRT.lib(gs_report.obj)" referenziert
    "MSVCRT.lib(MSVCR100.dll)" geladen
    "public: void __thiscall type_info::_type_info_dtor_internal_method(void)" (?_type_info_dtor_internal_method@type_info@@QAEXXZ) gefunden.
    In "MSVCRT.lib(typeinfo_dtor_32.obj)" referenziert
    "MSVCRT.lib(MSVCR100.dll)" geladen
    __invoke_watson gefunden.
    In "MSVCRT.lib(fp8.obj)" referenziert
    "MSVCRT.lib(MSVCR100.dll)" geladen
    __controlfp_s gefunden.
    In "MSVCRT.lib(fp8.obj)" referenziert
    "MSVCRT.lib(MSVCR100.dll)" geladen
    Durchsuchen von C:\Program Files\Microsoft Visual Studio 10.0\VC\LIB\OLDNAMES.lib:
    Durchsuchen von C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\mswsock.lib:
    Durchsuchen von C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
    LINK : fatal error LNK1104: Datei "LIBC.lib" kann nicht geöffnet werden.
    


  • Dann ist sie vermutlich per #pragma comment(lib, "...") irgendwo eingeflossen... such doch einfach mal mit einem Texteditor in den LIBs 😉



  • Jochen Kalmbach schrieb:

    Und Du bindest ja noch andere LIBs ein, die auch wieder eine Import-LIB mitbringen können... da würde ich mal suchen (z.B. FSUIPC_User.lib; oder auch andere).

    Importlibs meint die, die mit
    #pragma comment("lib"

    eingebunden werden?

    Da muss ich dich enttäuschen, die fsuipc_user.h enthält kein #pragma link

    Bliebe noch die ws2_32.lib (winsock2). Könnte die die libc.lib anfordern?



  • Jochen Kalmbach schrieb:

    Dann ist sie vermutlich per #pragma comment(lib, "...") irgendwo eingeflossen... such doch einfach mal mit einem Texteditor in den LIBs 😉

    Negative, sir!

    Habe gerade das ganze projekt mit includes rekursiv durchgegrept. Nur einen

    # pragma comment(lib, "user32.lib")
    

    habe ich gefunden. Nix mit libc.lib.
    Das ist doch zum Mäuse melken!

    Philipp



  • So, jetzt weiß ich zumindest schonmal, was er haben will.
    Ich habe ihm eine 0Byte Datei mit Namen libc.lib zum linken hingeworfen. Damit sehe ich zumindest, welche Symbole er da rausholen will:

    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __PostQuitMessage@4" in Funktion ""long __stdcall WindowProc(struct HWND__ *,uns
    igned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __EndPaint@8" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned i
    nt,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __DrawTextW@20" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned
     int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __BeginPaint@8" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned
     int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __GetClientRect@8" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsig
    ned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __DefWindowProcW@16" in Funktion ""long __stdcall WindowProc(struct HWND__ *,uns
    igned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __DispatchMessageW@4" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __TranslateMessage@4" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __GetMessageW@16" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __UpdateWindow@4" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __ShowWindow@8" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __CreateWindowExW@48" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __RegisterClassW@4" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __LoadCursorW@8" in Funktion "_WinMain@16".
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp
    __LoadIconW@8" in Funktion "_WinMain@16".
    fsmessagewidget.obj : error LNK2019: Verweis auf nicht aufgelöst
    es externes Symbol "__imp__MessageBoxW@16" in Funktion ""public: virtual void __
    thiscall XSPL::FSMessageWidget::display(void)" (?display@FSMessageWidget@XSPL@@U
    AEXXZ)".
    FSUIPC_User.lib(IPCuser.obj) : error LNK2019: Verweis auf nicht aufgelöstes exte
    rnes Symbol "__imp__SendMessageTimeoutA@28" in Funktion "_FSUIPC_Process".
    FSUIPC_User.lib(IPCuser.obj) : error LNK2019: Verweis auf nicht aufgelöstes exte
    rnes Symbol "__imp__wsprintfA" in Funktion "_FSUIPC_Open".
    FSUIPC_User.lib(IPCuser.obj) : error LNK2019: Verweis auf nicht aufgelöstes exte
    rnes Symbol "__imp__RegisterWindowMessageA@4" in Funktion "_FSUIPC_Open".
    FSUIPC_User.lib(IPCuser.obj) : error LNK2019: Verweis auf nicht aufgelöstes exte
    rnes Symbol "__imp__FindWindowExA@16" in Funktion "_FSUIPC_Open".
    FS\scs\scs.exe : fatal error LNK1120: 20 nicht aufgelöste externe Verweise.
    

    wsprintfa ???
    wide-char-stream-print-f-ansi ? Das gehört doch zur C-Laufzeitumgebung, oder?

    Philipp



  • Casesensitive?

    Was Microsoft in aktuellen Quelltexten nicht mehr sehen will:
    http://msdn.microsoft.com/en-us/library/bb288454.aspx

    Hoffe mal, das ich das richtig interpretiere.



  • f.-th. schrieb:

    Was Microsoft in aktuellen Quelltexten nicht mehr sehen will:
    http://msdn.microsoft.com/en-us/library/bb288454.aspx

    Das ist mir bekannt. cl gibt da an entsprechenden Stellen auch eine Warnung aus.

    Was mich hingegen stutzig macht ist folgendes:

    Dieses Projekt, was ich hier kompiliere, kompiliere ich in zwei ausführungen:
    -Als .dll ohne die oben zitierte main.cpp , dafür mit einer Datei, die verschiedene API-Callbacks offenlegt.
    -Als .exe ohne die APIs, dafür mit der oben zitierten main.cpp, die das ganze zur win32 anwendung statt dll macht und ein unsichtbares Hauptfenster aufmacht.

    Wenn ich als dll ohne die winmain funktion kompiliere, baut alles perfekt und ich kann die dll in meinem System benutzen, problemlos.
    Wenn ich hingegen als exe kompiliere, und die main.cpp mitkompiliert wird, fällt plötzlich der Linker auf die Fresse.

    Ergo muss der Fehler in der winmain liegen, die irgendetwas veraltetes referenziert, für das es keine lib mehr gibt.

    Philipp

    EDIT: Und mit mingw funktioniert beides, wollte ich nur noch erwähnen. Nur der Visual C++ 2010 Linker fällt über die libc.lib



  • Hab das VS2010 nicht:
    Kannst du das zu Testzwecken dazu verleiten ein älteres VS200x zu simulieren.

    Aber so wie ich das in den Suchmaschinenergebnissen überflogen hab, haben schon viele vor dem Problem gesessen. Eine richtige Erfolgsmeldung hab ich aber auch nicht gesehen.

    Hast du den Quellcode komplett vorliegen oder bindest du externe libs ein?

    Im Zweifel noch mal das ganz Projekt neu kompilieren und linken. Manchmal sollen sich irgend welche übersetzten Reste hartnäckig in Caches halten. Aktuell hab ich das Problem zwar nicht - aber vor ein paar Jahren musste ich den PC ausschalten und mehrere Minuten warten bis sich der Rechner wieder sauber hochfahren lies.

    MfG f.-th.



  • f.-th. schrieb:

    Hast du den Quellcode komplett vorliegen oder bindest du externe libs ein?

    Im Zweifel noch mal das ganz Projekt neu kompilieren und linken.

    Das war ein weiterer guter Hinweis!

    Habe die fsuipc_user.lib aus den quellen neu übersetzt mit vs2010
    ->
    Jetzt kommt keine "LIBC.lib nicht gefunden" Meldung mehr, sondern sofort oben stehende nicht aufgelöste Symbole. Die 0Byte libc.lib habe ich natürlich inzwischen gelöscht.

    Aber was du sagst mit den Caches klingt ja etwas 😮

    Aber man weiß ja: "Reboot tut gut", alte Indianerweisheit aus dem Nordwesten der USA 😃



  • Mühsam ernährt sich das Eichhörnchen.

    So, einen Reboot später und fsuipc_user.lib ist aus den Quellen neu übersetzt mit vs 2010.

    Ergebnis: Der Linker versucht NICHT MEHR, die libc.lib zu linken. Also war tatsächlich FSUIPC Schuld an diesem Fehler.

    Jetzt verbleiben noch die folgenden nichtaufgelösten Symbole:

    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__PostQuitMessage@4" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__EndPaint@8" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DrawTextW@20" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__BeginPaint@8" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetClientRect@8" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DefWindowProcW@16" in Funktion ""long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DispatchMessageW@4" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__TranslateMessage@4" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetMessageW@16" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__UpdateWindow@4" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ShowWindow@8" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateWindowExW@48" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__RegisterClassW@4" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadCursorW@8" in Funktion "_WinMain@16".
    
    fsmain.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadIconW@8" in Funktion "_WinMain@16".
    
    fsmessagewidget.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__MessageBoxW@16" in Funktion ""public: virtual void __thiscall XSPL::FSMessageWidget::display(void)" (?display@FSMessageWidget@XSPL@@UAEXXZ)".
    
    ipcuser.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SendMessageTimeoutW@28" in Funktion "_FSUIPC_Process".
    
    ipcuser.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__wsprintfW" in Funktion "_FSUIPC_Open".
    
    ipcuser.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__RegisterWindowMessageW@4" in Funktion "_FSUIPC_Open".
    
    ipcuser.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__FindWindowExW@16" in Funktion "_FSUIPC_Open".
    
    FS\scs\scs.exe : fatal error LNK1120: 20 nicht aufgelöste externe Verweise.
    

    Welche .lib fehlt hier, die diesen Krempel enthält?

    Philipp



  • Beachte: Wenn Du selber LIB-Dateien hast/erstellst und diese dazulinkst, dann *musst* Du alle diese LIBs mit *genau dem gleichen* Compiler/Linker erstellen!

    Aber zu Deinem Problem: Dir fehlen min. die Windows LIBs:
    user32.lib

    Und vielleicht noch andere. Einfach in der Hilfe der jeweiligen Funktion nachschauen, was für eine LIB Du noch eintragen musst, z.B.:
    RegisterWindowMessage
    http://msdn.microsoft.com/en-us/library/ms644947



  • Jochen Kalmbach schrieb:

    Aber zu Deinem Problem: Dir fehlen min. die Windows LIBs:
    user32.lib

    YEAAAHHHH!!

    -lUser32 bei LIBS eingefügt und es LÄÄÄUUUUUFT!!!1

    Herr Kalmbach, sie sind mein Held!

    Strike!! MS Visual Studio besiegt. Tagesziel erreicht.

    -> AFK Tee kochen.

    🙂 🙂 🙂 🙂

    EDIT: f.-th. ist natürlich auch mein Held, der mich darauf gebracht hat, FSUIPC neu zu übersetzen.



  • PhilippM schrieb:

    MS Visual Studio besiegt. Tagesziel erreicht.

    PS: Du brauchst kein VS um auf der Commandozeile zu compilieren... das geht auch mit dem PSDK (WSDK).


Anmelden zum Antworten