Build errors in Visual Studio 2008 Professional

Using VS2008 Professional, I have built SDL 1.3 dated (1/20/2010)
with no problems.

However, when I attempt to build an application that successfully
compiles/links successfully with SDL 1.2.14, I get a long list of warnings
and errors when building with SDL 1.3. (See below).

Just to eliminate the possibility of a corrupt project/solution file, I have
tried creating a new project from scratch, but it yields the same results.

Something in the #include files seems to be incompatible with VS2008.

Using VS2010 Express (with SDL 1.3 built with VS2010) works perfectly well.
But I would prefer not to migrate to VS2010 yet.

Thanks in advance.

1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(96) : warning C4190: ‘&’ has C-linkage specified, but returns UDT ‘M64’ which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(97) : warning C4190: ‘|’ has C-linkage specified, but returns UDT ‘M64’ which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(98) : warning C4190: ‘^’ has C-linkage specified, but returns UDT ‘M64’ which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(99) : warning C4190: ‘andnot’ has C-linkage specified, but returns UDT ‘M64’ which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(162) : warning C4190: ‘cmpeq’ has C-linkage specified, but returns UDT ‘I32vec2’ which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(133) : see declaration of ‘I32vec2’
(to be continued…)

There are also some errors:
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(233) : error C2733: second C linkage of overloaded function ‘cmpeq’ not allowed
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(233) : see declaration of 'cmpeq’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(234) : error C2733: second C linkage of overloaded function ‘cmpneq’ not allowed
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(234) : see declaration of ‘cmpneq’

those errors are concerning, and unfortunely I don’t use MSVC and thus can’t help.

However, I can tell you that SDL 1.3 uses a very different API from SDL1.2 and all SDL 1.2 compatibility functions are in SDL_compat.h instead of their normal headers.
See if that doesn’t fix most of your non-totally-bizarre errors.------------------------
EM3 Nathaniel Fries, U.S. Navy

http://natefries.net/

adamvsmith wrote:

commenting out #include <atomic.h> in sdl.h helps, but does not resolve everything.

The issue with SDL_atomic.h has been reported. http://bugzilla.libsdl.org/show_bug.cgi?id=1097

What errors are you getting when you comment it out?

commenting out #include <atomic.h> in sdl.h helps, but does not resolve everything.

I have a fix for this, attached. I’ll push it to the repository once we get
commit access worked out.On Fri, Jan 21, 2011 at 6:38 PM, adamvsmith wrote:

Using VS2008 Professional, I have built SDL 1.3 dated (1/20/2010)
with no problems.

However, when I attempt to build an application that successfully
compiles/links successfully with SDL 1.2.14, I get a long list of warnings
and errors when building with SDL 1.3. (See below).

Just to eliminate the possibility of a corrupt project/solution file, I
have
tried creating a new project from scratch, but it yields the same results.

Something in the #include files seems to be incompatible with VS2008.

Using VS2010 Express (with SDL 1.3 built with VS2010) works perfectly well.
But I would prefer not to migrate to VS2010 yet.

Thanks in advance.

1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(96)
: warning C4190: ‘&’ has C-linkage specified, but returns UDT ‘M64’ which is
incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77)
: see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(97)
: warning C4190: ‘|’ has C-linkage specified, but returns UDT ‘M64’ which is
incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77)
: see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(9[image:
Cool] : warning C4190: ‘^’ has C-linkage specified, but returns UDT 'M64’
which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77)
: see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(99)
: warning C4190: ‘andnot’ has C-linkage specified, but returns UDT 'M64’
which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(77)
: see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(162)
: warning C4190: ‘cmpeq’ has C-linkage specified, but returns UDT 'I32vec2’
which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(133) : see declaration of ‘I32vec2’
(to be continued…)

There are also some errors:
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(233)
: error C2733: second C linkage of overloaded function ‘cmpeq’ not allowed
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(233) : see declaration of 'cmpeq’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(234)
: error C2733: second C linkage of overloaded function ‘cmpneq’ not allowed
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(234) : see declaration of ‘cmpneq’


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


-Sam Lantinga, Founder and President, Galaxy Gameworks LLC
-------------- next part --------------
A non-text attachment was scrubbed…
Name: SDL_VS2005.fix
Type: application/octet-stream
Size: 1505 bytes
Desc: not available
URL: http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20110122/26afafeb/attachment.obj

This fix is in the repository now.

See ya!On Sat, Jan 22, 2011 at 11:59 AM, Sam Lantinga <@slouken> wrote:

I have a fix for this, attached. I’ll push it to the repository once we
get commit access worked out.

On Fri, Jan 21, 2011 at 6:38 PM, adamvsmith wrote:

Using VS2008 Professional, I have built SDL 1.3 dated (1/20/2010)
with no problems.

However, when I attempt to build an application that successfully
compiles/links successfully with SDL 1.2.14, I get a long list of warnings

and errors when building with SDL 1.3. (See below).

Just to eliminate the possibility of a corrupt project/solution file, I
have
tried creating a new project from scratch, but it yields the same results.

Something in the #include files seems to be incompatible with VS2008.

Using VS2010 Express (with SDL 1.3 built with VS2010) works perfectly
well.
But I would prefer not to migrate to VS2010 yet.

Thanks in advance.

1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(96)
: warning C4190: ‘&’ has C-linkage specified, but returns UDT ‘M64’ which is
incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(97)
: warning C4190: ‘|’ has C-linkage specified, but returns UDT ‘M64’ which is
incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(9[image:
Cool] : warning C4190: ‘^’ has C-linkage specified, but returns UDT 'M64’
which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ivec.h(99)
: warning C4190: ‘andnot’ has C-linkage specified, but returns UDT 'M64’
which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(77) : see declaration of 'M64’
1>C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(162) : warning C4190: ‘cmpeq’ has C-linkage specified,
but returns UDT ‘I32vec2’ which is incompatible with C
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(133) : see declaration of ‘I32vec2’
(to be continued…)

There are also some errors:
1>C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(233) : error C2733: second C linkage of overloaded
function ‘cmpeq’ not allowed
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(233) : see declaration of 'cmpeq’
1>C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(234) : error C2733: second C linkage of overloaded
function ‘cmpneq’ not allowed
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\ivec.h(234) : see declaration of ‘cmpneq’


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


-Sam Lantinga, Founder and President, Galaxy Gameworks LLC


-Sam Lantinga, Founder and President, Galaxy Gameworks LLC