SDL and Visual C++ 2008 Express - Not Playing Nice

Started by
6 comments, last by mysty 14 years, 5 months ago
Okay, so I wanted to create a VC++ Express 2008 project with SDL. Here's what I did: Downloaded SDL-devel-1.2.12-VC8.zip and unzipped it to C:/sdl added C:/sdl/include to VC's include directories added C:/sdl/lib to VC's lib directories created a blank project added main.cpp with this content:
#include <sdl.h>
#include <sdl_main.h>
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")


int main(int argc, char *argv[])
{
  return 0;
}
checked Project Properties | C/C++ | Code Generation | Runtime Library (It was set to Multithreaded Debug DLL) I then compiled my program to get this output:
------ Build started: Project: [Project], Configuration: Debug Win32 ------
Compiling...
main.cpp
Linking...
LINK : fatal error LNK1561: entry point must be defined
Build log was saved at "[my project directory]"
[Project] - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I don't see what I missed. I know the pragmas did link libraries because I put nonsense in one and the linker gave me a file not found error. I'm downloading the DirectX SDK so I can compile SDL myself in hopes that the precompiled binaries just aren't compatible with VCE 2008. Can anyone see anything wrong with this?
Advertisement
configuration properties -> linker -> system -> sybsystem = windows
____________________________Bjarni Arnasonbjarni.us
Thanks, that did it, though I have no idea why. I'll go a googling for it.
BIG thank to bjarnia!!!!

I downloaded a Win32 : SDL version 1.2.13 (stable) from http://www.libsdl.org/download-1.2.php
I unzipped in a folder named "sdl" like "C:\sdl\SDL-1.2.13"

I downloaded and install (in 20 minutes) Visual C++ Express 2008 from http://www.microsoft.com/express/download/
I restarted my computer

In Visual C++ Express 2008:

1. Tools -> Options... -> Projects and Solutions -> VC++ Directories -> Plateform: Win32 -> Show directories for: Includes files -> C:\sdl\SDL-1.2.13\include (and i clicked arrow up to put this line at the top)

2. Tools -> Options... -> Projects and Solutions -> VC++ Directories -> Plateform: Win32 -> Show directories for: Library files -> C:\sdl\SDL-1.2.13\lib (and i clicked arrow up to put this line at the top)

3. Configuration Properties -> C/C++ -> General -> Detect 64-bit Portability Issues

4. Configuration Properties -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded DLL (/MD)

5. Configuration Properties -> Linker -> Input -> Additional Dependencies -> SDLmain.lib SDL.lib

=================================
and finally what i was looking for :

6. Configuration Properties -> Linker -> System -> SubSystem Windows : (/SUBSYSTEM:WINDOWS)
=================================

Job done! Finally!!!!!! :)
It should also work with the subsystem console. At least it always did and still does for me. Also the official and portable way to include SDL is like this:

#include "SDL.h"

No, angle brackets and in upper case. Also SDL_main.h is not normally meant to be included by user code.

The #pragma comment(lib, ...) is also not portable.
This thread helped me in part, but I still can't get it to compile. I've only used MinGW before, trying to move some code over to Visual C++ 2008 Express, and I'm running into all sorts of problems just adding the libs my project uses. Right now it's stipped down to just a testproject which simply includes SDL and nothing more.

#include "SDL/SDL.h"void main() {}


Here's what I'm getting at this point:

1>------ Rebuild All started: Project: playground, Configuration: Debug Win32 ------1>Deleting intermediate and output files for project 'playground', configuration 'Debug|Win32'1>Compiling...1>main.cpp1>Linking...1>SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol _SDL_main referenced in function _main1>D:\projectdata\kodprojekt\msvcpp_express\playground\Debug\playground.exe : fatal error LNK1120: 1 unresolved externals1>Build log was saved at "file://d:\projectdata\kodprojekt\msvcpp_express\playground\playground\Debug\BuildLog.htm"1>playground - 2 error(s), 0 warning(s)========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========


What's missing?

Solved, I simplified too much while trying to find the problem, it works with a proper main(), ie:

int main(int argc, char *argv[]) { }

Thanks ;)
Just wanted to say thanks... this thread provided a solution before I even posted my problem. ;)

This topic is closed to new replies.

Advertisement