c - Waveform API linkfejl

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg får en slags forbindelsesfejl med et program, der bruger MSs waveform API. Koden jeg bruger kan findes her: http://www.planet-source-code.com/vb/scripts/ShowCode. asp txtCodeId=4422 &? lngWId=3
Det er den første kodekode på siden under overskriften 'Åbning af lydenheden'. Jeg får ikke fejl med koden, men min linker klager ganske vedholdende. Udgangen er følgende: [3]


d:codeblocksmingwin..libgccmingw324.4.1......crt2.o:crt1.c|| undefined reference to `SetUnhandledExceptionFilter@4'|
d:codeblocksmingwin..libgccmingw324.4.1......crt2.o:crt1.c|| undefined reference to `ExitProcess@4'|
d:codeblocksmingwin..libgccmingw324.4.1crtbegin.o:cygming-crtbegin.c|| undefined reference to `GetModuleHandleA@4'|
d:codeblocksmingwin..libgccmingw324.4.1crtbegin.o:cygming-crtbegin.c|| undefined reference to `GetProcAddress@8'|
d:codeblocksmingwin..libgccmingw324.4.1......libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `VirtualQuery@12'|
d:codeblocksmingwin..libgccmingw324.4.1......libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `VirtualProtect@16'|
d:codeblocksmingwin..libgccmingw324.4.1......libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `VirtualProtect@16'|
d:codeblocksmingwin..libgccmingw324.4.1libgcc.a(cygming-shared-data.o)||In function `cmshared\_get\_ptr\_from\_atom':|
c:crossdev4.4.1-tdm-1uild-sjljmingw32libgcc........gcc-4.4.1libgcc..gccconfigi386cygming-shared-data.c|91|undefined reference to `GetAtomNameA@12'|
d:codeblocksmingwin..libgccmingw324.4.1libgcc.a(cygming-shared-data.o)||In function `\_cmshared\_create\_or\_grab':|
c:crossdev4.4.1-tdm-1uild-sjljmingw32libgcc........gcc-4.4.1libgcc..gccconfigi386cygming-shared-data.c|140|undefined reference to `FindAtomA@4'|
d:codeblocksmingwin..libgccmingw324.4.1libgcc.a(cygming-shared-data.o)||In function `cmshared\_add\_ptr\_as\_atom':|
c:crossdev4.4.1-tdm-1uild-sjljmingw32libgcc........gcc-4.4.1libgcc..gccconfigi386cygming-shared-data.c|118|undefined reference to `AddAtomA@4'|
||=== Build finished: 10 errors, 0 warnings ===|


Jeg kan også indsætte byggeloggen her, hvis det er nødvendigt. Kan nogen fortælle mig, hvad jeg skal gøre for at rette op på dette? Eller endnu bedre, hvordan man fejler det selv, så jeg kan løse fremtidige problemer som dette selv?


[[EDIT]]: Okay, så jeg formåede at løse dette. Mens du spiller rundt i Project-> Build Options-> Linker Settings-> Link Biblioteker, bemærkede jeg, at hvis jeg tilføjer noget som kernel32.lib får jeg en fejl fra ld, der siger 'kan ikke finde -lkernel32.lib'. Så jeg søgte rundt, indtil jeg fandt de biblioteker, jeg krævede, og jeg tilføjede absolutte stier til dem, og nu samler mit projekt fejlfrit! : D Men det var lidt mærkeligt, da jeg tilføjede bibliotekets søgevej, og det syntes ikke at hjælpe. Så jeg gik over det igen for at se, hvorfor det ikke virkede at virke, og det lader til at man skal tilføje en baglæns slæbe til stienavnet, som om bibliotekerne er placeret i 'C: \ SDK \ Lib \' man skal tilføje den slæbende skråstreg for Code :: BLocks for at søge det korrekt. Når det var blevet løst, ændrede jeg indstillingen i Linker Settings-> Link biblioteker til kernel32 som anbefalet og nu fungerer det uden en hitch.


Tak til alle, der hjalp mig ud med dette !!! ^ \_ ^

Bedste reference


Jeg fik de samme fejl, når jeg placerer et bibliotek i system32 og forsøger at linke til det med LIBS += L$$quote(C:/Windows/System32).


Da jeg lagde det i en normal mappe og satte den relative vej til den, virker alt okay.

Andre referencer 1


Ser ud som om du ikke forbinder med Kernel32.lib Kontroller dine projektegenskaber.

Andre referencer 2


Jeg var det samme problem, og efter lidt tid fandt jeg ud af, hvordan man gør det, afhænger problemet af linkeren, det forsøger at forbinde nogle Windows-funktioner i exe-filen, og kompilatoren kan ikke finde dem, sådan er jeg løst dette:



  1. Installer Windows 7 SDK, du kan downloade det herfra: http://www.microsoft.com/download/da/details.aspx?displaylang=dau0026amp;id=3138

  2. Tilføj bibliotekets sti til søgebibliotekerne på CodeBlocks
    Projekt/Bygningsindstillinger (vælg Projektet, hvis du vil linke det til alle de konfigurationer du har)/Søg kataloger/Linker/Tilføj og læg SDK-bibliotekets sti, som skal være på: C: \ Programmer \ Microsoft SDKs \ Windows \ v7.1 \ Lib

  3. Tilføj referencerne til Windows-bibliotekerne på linkerindstillingerne:
    Projekt/Bygningsindstillinger/Linker Indstillinger/Tilføj (ved Link Biblioteker) og tilføj kernel32, User32 og Gdi32 (denne sidste skal tilføjes, hvis du bruger Windows Gui).



Det er det ... nu genopbygge dit projekt, og det skal fungere fejlfrit. [4]


Bemærk: Du skal tilføje disse indstillinger til exe-projektet, hvis du 'skaber biblioteker, vil fejlen blive vist, når du prøver at forbinde exe-filen.