Problem linkera

0

Witam
Pracujęnad pewnym programem w Visual C++ 6. Poprawiłem wszystkie błędy jakie udało mi się znaleŹć ale cały czas wystakują mi 2 których po pierwsze nie wiem jak usunąć a po drugie nie wiem czego one dotyczą. Oto owe błędy:

LINK : fatal error LNK1152: cannot resolve one or more undecorated symbols
LINK : fatal error LNK1141: failure during build of exports file
Error executing link.exe.

Czy mogłby mi ktoś powiedzieć co te błędy oznaczają i dzlaczego mój program nie chce przez to działać.

Z góry dziękuję

0

dopisane: http://support.microsoft.com/kb/q141485/

undecorated symbols - pewnie podałeś mu objekty ze spacjami w nazwie bez cudzysłowy ?
Jest takie api BOOL PathQuoteSpaces(lpString) które to dodaje cudzysłów do podanego stringu jeśli w nim są spacje. Ma minusa - nie sprawdza czy już jest cudzysłów.
W drógą stronę działa BOOL PathUnquoteSpaces(lpString)

co robisz z link'em ? :)
masz tu kilka przykładów

wylistowanie zawartości LIBa
link.exe -lib /nologo D:\IBpro\libs\New_library.lib /list
link.exe -lib /nologo "D:\IBpro\libs\New library.lib" /list

usunięcie objektu (pliku .obj) z LIBa
link.exe -lib /nologo D:\IBpro\libs\New_library.lib /remove:YesNoBox.obj
link.exe -lib /nologo D:\IBpro\libs\New_library.lib /remove:"Yes No Box.obj"

zapis objektu na dysk
link.exe -lib /nologo D:\IBpro\libs\New_library.lib /extract:xOpenFile.obj /out\libs\OpenFile.obj

dodanie lub podmiana objektu
link.exe -lib /nologo D:\IBpro\libs\New_library.lib SH_CreateDirectory.obj

tworzenie nowej biblioteki
link.exe -lib /nologo CenterDialog.obj /out\IBpro\libs\dialogs.lib

podczas dodawania/podmiany objektów dobrze jest uruchomić linkera z currentdir=folder pliku obj żeby nie dodawał całej ścieżki do nazwy objektu
bo jeśli mu podasz

link.exe -lib /nologo D:\IBpro\libs\New_library.lib "c:\moje liby\SH_CreateDirectory.obj"

to w LIBie zrobi sie objekt o nazwie "c:\moje liby\SH_CreateDirectory.obj"

A zatem każdy path i każdy objekt, który podajesz w commandline linkerowi musi być ujęty w cudzysłów jeśli zawiera spacje

link ma jeszcze switcha -dump i pewnie jeszcze inne (patrz na opis programu dump.exe, który to przekierowuje parametry do link.exe z dodatkiem -dump)

piszę program do zabawy właśnie z tym linkerem, link do sampla poniewiera się gdzieś tu w dziale C/C++ (lib creator)
Użyłem CreatePipe() do 'odbierania' tego co link normalnie pisze w konsoli

0

Dzięki za informacje !! Bardzo mi się przydały.

1 użytkowników online, w tym zalogowanych: 0, gości: 1