Hello!
I'm trying to link sdl.dll to my project, first made sdl.def using Borland
impdef, then sdl.a using dlltool, seems that it contains all dll exported
functions (prefixed with _). Then I've added sdl.a to my project and
got Linker Error : undefined reference to.... As I've read from somewhere,
I've added Project Option->Files->sdl.a ->"Include in linking", now I got
: exe: No rule to make target ../../Lib/SDL/bin/sdl.o', needed bysdl1.exe'. Stop.*
What am I doing wrong?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Compiler log:
Compiler: Default compiler
Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
Executing make...
mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
mingw32-make.exe: *** No rule to make target sdl.o', needed bysdl1.exe'.
Stop.
Ok, I get through it, now linker scold : undefined reference to `WinMain@16'
I would be to make console application with SDL window, is it possible?
Couldn't link SDLmain, here is log:
**Compiler: Default compiler
Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
Executing make...
mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
g++.exe main.o -o "sdl1.exe" -L"C:/Programs/Dev/DevCpp/lib"
-L"C:/Projects/Lib/SDL/Lib" -lmingw32 -lsdlmain -lsdl -mwindows
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x0):
multiple definition of main'
C:/Programs/Dev/DevCpp/lib/libmingw32.a(main.o)(.text+0x0):main.c: first
defined here
Warning: .drectve/manifestdependency:"type='win32' name='Microsoft.VC80.CRT'
version='8.0.50727.762' processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b'" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES"
' unrecognized
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x9):
undefined reference to _imp____iob_func'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x4):
undefined reference to_imp_iob_func'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x7):
undefined reference to __security_cookie'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x6d):
undefined reference to_imp_iob_func'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x160)
: undefined reference to @__security_check_cookie@4'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x5):
undefined reference tosecurity_cookie'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x65):
undefined reference to _alloca_probe_16'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x80):
undefined reference to@security_check_cookie@4'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xbe):
undefined reference to @__security_check_cookie@4'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xf1):
undefined reference toSDL_main'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x5):
undefined reference to __security_cookie'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x67):
undefined reference to_alloca_probe_16'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x96):
undefined reference to `_alloca_probe_16'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xbf):
undefined reference to `@__security_check_cookie@4'
collect2: ld returned 1 exit status
mingw32-make.exe: *** Error 1
Execution terminated**
Also tried tu put sdl_main.cc in project and got ton of erros due to dependent
files
Is there way beside recompiling SDL?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
First try compiling it as a console program.
In Project Options->General, highlight Win32Console.
It would be better to just create a project file instead of using a makefile.
File->New->Project, highlight Console Application.
Then add your files to the project by right clicking on the project name.
By doing this you will not need the generated makefile.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello!
I'm trying to link sdl.dll to my project, first made sdl.def using Borland
impdef, then sdl.a using dlltool, seems that it contains all dll exported
functions (prefixed with _). Then I've added sdl.a to my project and
got Linker Error : undefined reference to.... As I've read from somewhere,
I've added Project Option->Files->sdl.a ->"Include in linking", now I got
:
exe: No rule to make target
../../Lib/SDL/bin/sdl.o', needed by
sdl1.exe'. Stop.*What am I doing wrong?
Post the entire compile log. You can copy it by a right click in the compile
window.
jimp03, thank for reply
Compiler log:
Compiler: Default compiler
Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
Executing make...
mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
mingw32-make.exe: *** No rule to make target
sdl.o', needed by
sdl1.exe'.Stop.
Execution terminated
Makefile
Project: sdl1
Makefile created by Dev-C++ 4.9.9.2
CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
RES =
OBJ = main.o sdl.o $(RES)
LINKOBJ = main.o sdl.o $(RES)
LIBS = -L"C:/Programs/Dev/DevCpp/lib" -L"C:/Projects/Lib/SDL/Lib"
-L"C:/Projects/Lib/SDL-1.2.15-mingw32/lib/" -L"C:/Projects/Lib/SDL/bin/"
-mwindows
INCS = -I"C:/Programs/Dev/DevCpp/include" -I"C:/Projects/Lib/SDL/Include"
CXXINCS = -I"C:/Programs/Dev/DevCpp/lib/gcc/mingw32/3.4.2/include"
-I"C:/Programs/Dev/DevCpp/include/c++/3.4.2/backward"
-I"C:/Programs/Dev/DevCpp/include/c++/3.4.2/mingw32"
-I"C:/Programs/Dev/DevCpp/include/c++/3.4.2"
-I"C:/Programs/Dev/DevCpp/include" -I"C:/Projects/Lib/SDL/Include"
BIN = sdl1.exe
CXXFLAGS = $(CXXINCS)
CFLAGS = $(INCS)
RM = rm -f
.PHONY: all all-before all-after clean clean-custom
all: all-before sdl1.exe all-after
clean: clean-custom
${RM} $(OBJ) $(BIN)
$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o "sdl1.exe" $(LIBS)
main.o: main.cpp C:/Programs/Dev/DevCpp/include/stdio.h
C:/Programs/Dev/DevCpp/include/_mingw.h
C:/Programs/Dev/DevCpp/lib/gcc/mingw32/3.4.2/include/stddef.h
C:/Programs/Dev/DevCpp/lib/gcc/mingw32/3.4.2/include/stdarg.h
C:/Programs/Dev/DevCpp/include/sys/types.h C:/Projects/Lib/SDL/Include/sdl.h
C:/Projects/Lib/SDL/Include/SDL_main.h
C:/Projects/Lib/SDL/Include/SDL_stdinc.h
C:/Projects/Lib/SDL/Include/SDL_config.h
C:/Projects/Lib/SDL/Include/SDL_platform.h
C:/Projects/Lib/SDL/Include/SDL_config_win32.h
C:/Programs/Dev/DevCpp/include/stdlib.h
C:/Programs/Dev/DevCpp/include/string.h
C:/Programs/Dev/DevCpp/include/stdint.h C:/Programs/Dev/DevCpp/include/ctype.h
C:/Projects/Lib/SDL/Include/begin_code.h
C:/Projects/Lib/SDL/Include/close_code.h
C:/Projects/Lib/SDL/Include/SDL_audio.h
C:/Projects/Lib/SDL/Include/SDL_error.h
C:/Projects/Lib/SDL/Include/SDL_endian.h
C:/Projects/Lib/SDL/Include/SDL_mutex.h
C:/Projects/Lib/SDL/Include/SDL_thread.h
C:/Projects/Lib/SDL/Include/SDL_rwops.h
C:/Projects/Lib/SDL/Include/SDL_cdrom.h
C:/Projects/Lib/SDL/Include/SDL_cpuinfo.h
C:/Projects/Lib/SDL/Include/SDL_events.h
C:/Projects/Lib/SDL/Include/SDL_active.h
C:/Projects/Lib/SDL/Include/SDL_keyboard.h
C:/Projects/Lib/SDL/Include/SDL_keysym.h
C:/Projects/Lib/SDL/Include/SDL_mouse.h
C:/Projects/Lib/SDL/Include/SDL_video.h
C:/Projects/Lib/SDL/Include/SDL_joystick.h
C:/Projects/Lib/SDL/Include/SDL_quit.h
C:/Projects/Lib/SDL/Include/SDL_loadso.h
C:/Projects/Lib/SDL/Include/SDL_timer.h
C:/Projects/Lib/SDL/Include/SDL_version.h
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
Also tried to remove file sdl.a from Project Options->Files list and add
to Project Options->Paramater->Linker
-lsdl
Now 've got compiler log
**Compiler: Default compiler
Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
Executing make...
mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
g++.exe main.o -o "sdl1.exe" -L"C:/Programs/Dev/DevCpp/lib"
-L"C:/Projects/Lib/SDL/Lib" -L"C:/Projects/Lib/SDL-1.2.15-mingw32/lib/"
-L"C:/Projects/Lib/SDL/bin/" -mwindows -lsdl
C:/Projects/Lib/SDL-1.2.15-mingw32/lib//libsdl.dll.a: file not recognized:
File format not recognized
collect2: ld returned 1 exit status
mingw32-make.exe: *** Error 1
Execution terminated**
You have added sdl.a to the wrong place.
Remove it from where it is now and add it to Project
Option->Parameters->Linker.
Ok, I get through it, now linker scold :
undefined reference to `WinMain@16'
I would be to make console application with SDL window, is it possible?
Couldn't link SDLmain, here is log:
**Compiler: Default compiler
Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
Executing make...
mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
g++.exe main.o -o "sdl1.exe" -L"C:/Programs/Dev/DevCpp/lib"
-L"C:/Projects/Lib/SDL/Lib" -lmingw32 -lsdlmain -lsdl -mwindows
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x0):
multiple definition of
main' C:/Programs/Dev/DevCpp/lib/libmingw32.a(main.o)(.text+0x0):main.c: first defined here Warning: .drectve
/manifestdependency:"type='win32' name='Microsoft.VC80.CRT'version='8.0.50727.762' processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b'" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES"
' unrecognized
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x9):
undefined reference to
_imp____iob_func' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x4): undefined reference to
_imp_iob_func'C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x7):
undefined reference to
__security_cookie' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x6d): undefined reference to
_imp_iob_func'C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x160)
: undefined reference to
@__security_check_cookie@4' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x5): undefined reference to
security_cookie'C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x65):
undefined reference to
_alloca_probe_16' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x80): undefined reference to
@security_check_cookie@4'C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xbe):
undefined reference to
@__security_check_cookie@4' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xf1): undefined reference to
SDL_main'C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x5):
undefined reference to
__security_cookie' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x67): undefined reference to
_alloca_probe_16'C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x96):
undefined reference to `_alloca_probe_16'
C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xbf):
undefined reference to `@__security_check_cookie@4'
collect2: ld returned 1 exit status
mingw32-make.exe: *** Error 1
Execution terminated**
Also tried tu put sdl_main.cc in project and got ton of erros due to dependent
files
Is there way beside recompiling SDL?
First try compiling it as a console program.
In Project Options->General, highlight Win32Console.
It would be better to just create a project file instead of using a makefile.
File->New->Project, highlight Console Application.
Then add your files to the project by right clicking on the project name.
By doing this you will not need the generated makefile.
jimp03
Thank for your appreciation. Finally I've solved this by sdl_devpack