Ya no sé qué probar -.-... a ver si alguien sabe qué pasa.
Tengo un programa cualquiera (main.cpp) que tiene cualquier cosa, da igual.
Tengo otro (winmain.cpp) aparte que implemente WinMain().
Los compilo, los enlazo y funciona perfectamente.
Ahora bien, si en lugar de enlazar los dos .o, creo una librería estática con winmain.o y lo enlazo con main.o... NO FUNCIONA.
El error es este:
He mirado los símbolos que contienen ambos archivos (el .o y el .a) y parecen idénticos:
En fin... resumiendo.
Esto funciona:
Esto no:
Por si sirve de algo, la librería la creo así:
Tengo un programa cualquiera (main.cpp) que tiene cualquier cosa, da igual.
Tengo otro (winmain.cpp) aparte que implemente WinMain().
Los compilo, los enlazo y funciona perfectamente.
Ahora bien, si en lugar de enlazar los dos .o, creo una librería estática con winmain.o y lo enlazo con main.o... NO FUNCIONA.
El error es este:
Código [Seleccionar]
/mingw/lib/libmingw32.a(main.o)(.text+0x106):main.c: undefined reference to `WinMain@16'
He mirado los símbolos que contienen ambos archivos (el .o y el .a) y parecen idénticos:
Código [Seleccionar]
>nm winmain.o
00000000 b .bss
00000000 d .data
00000000 t .text
00000000 T _WinMain@16
Código [Seleccionar]
>nm winmain.a
winmain.o:
00000000 b .bss
00000000 d .data
00000000 t .text
00000000 T _WinMain@16
En fin... resumiendo.
Esto funciona:
Código [Seleccionar]
>g++ -o main.exe main.o winmain.o
Esto no:
Código [Seleccionar]
>g++ -o main.exe main.o winmain.a
Por si sirve de algo, la librería la creo así:
Código [Seleccionar]
ar r winmain.a winmain.o
ranlib winmain.a