Jump to content


Compiles in Visual Studio but not CoDeveloper


  • You cannot reply to this topic
2 replies to this topic

#1 Jonathan

    Member

  • Members
  • PipPip
  • 25 posts

Posted 24 June 2009 - 02:33 PM

I'm trying to do some socket programming for uClinux at the moment. Since I'm developing on windows using Visual Studio and CoDeveloper, I wanted to use a cross-platform socket wrapper, and settled on SFL (The Standard Function Library). For me to use their sflsock code functions connect_TCP and write_TCP I identified that I needed to include a set of headers, and the sflconv.c, sflcvsb.c, sfllist.c, sflmem.c, sflsock.c, sflstr.c, sflsymb.c, sflsyst.c, sfltok.c, and sfluid.c files. Doing so in Visual Studio, I get the project to compile succesfully (albeit, with numerous deprecation and unsafe function warnings). However, in CoDeveloper I get the following list of errors after adding all the above mentioned c files and setting them as being both software and desktop simulation files:

C:/Impulse/CoDeveloper3\MakeRules\Makefile.rules:194: warning: overriding commands for target `hdl_build'
C:/Impulse/CoDeveloper3\MakeRules\Makefile.rules:186: warning: ignoring old commands for target `hdl_build'
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sflsock.o -c sflsock.c
In file included from sflsock.c:20:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o HelloWorld_hw.o -c HelloWorld_hw.c
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o HelloWorld.o -c HelloWorld.c
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o HelloWorld_sw.o -c HelloWorld_sw.c
In file included from HelloWorld_sw.c:8:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sfluid.o -c sfluid.c
In file included from sfluid.c:16:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sflsyst.o -c sflsyst.c
In file included from sflsyst.c:16:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sflmem.o -c sflmem.c
In file included from sflmem.c:18:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sfltok.o -c sfltok.c
In file included from sfltok.c:16:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sflstr.o -c sflstr.c
In file included from sflstr.c:16:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sfllist.o -c sfllist.c
In file included from sfllist.c:16:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sflsymb.o -c sflsymb.c
In file included from sflsymb.c:16:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sflconv.o -c sflconv.c
In file included from sflconv.c:19:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g "-IC:\Impulse\CoDeveloper3\Include" "-IC:/Impulse/CoDeveloper3/StageMaster/include" -DWIN32 "-IC:/Impulse/CoDeveloper3/MinGW/include" -o sflcvsb.o -c sflcvsb.c
In file included from sflcvsb.c:16:
prelude.h:363: warning: redefinition of `byte'
C:/Impulse/CoDeveloper3/MinGW/include/rpcndr.h:50: warning: `byte' previously declared here
"C:/Impulse/CoDeveloper3/MinGW/bin/gcc" -g sflsock.o HelloWorld_hw.o HelloWorld.o HelloWorld_sw.o sfluid.o sflsyst.o sflmem.o sfltok.o sflstr.o sfllist.o sflsymb.o sflconv.o sflcvsb.o "C:\Impulse\CoDeveloper3\Libraries/ImpulseC.lib" -o HelloWorld.exe
sflsock.o(.text+0x126): In function `sock_init':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:107: undefined reference to `WSAStartup@8'
sflsock.o(.text+0x156): In function `sock_term':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:146: undefined reference to `WSACleanup@0'
sflsock.o(.text+0x204): In function `passive_socket':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:260: undefined reference to `getservbyname@8'
sflsock.o(.text+0x21f):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:262: undefined reference to `ntohs@4'
sflsock.o(.text+0x239):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:262: undefined reference to `htons@4'
sflsock.o(.text+0x278):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:267: undefined reference to `htons@4'
sflsock.o(.text+0x2db):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:283: undefined reference to `bind@12'
sflsock.o(.text+0x329):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:293: undefined reference to `listen@8'
sflsock.o(.text+0x36a): In function `create_socket':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:347: undefined reference to `getprotobyname@4'
sflsock.o(.text+0x3ce):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:360: undefined reference to `socket@12'
sflsock.o(.text+0x440): In function `prepare_socket':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:407: undefined reference to `ioctlsocket@12'
sflsock.o(.text+0x5f8): In function `connect_socket':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:688: undefined reference to `connect@12'
sflsock.o(.text+0x60b):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:694: undefined reference to `WSAGetLastError@0'
sflsock.o(.text+0x6ab): In function `connect_to_peer':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:752: undefined reference to `connect@12'
sflsock.o(.text+0x730): In function `address_end_point':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:811: undefined reference to `getservbyname@8'
sflsock.o(.text+0x74e):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:813: undefined reference to `ntohs@4'
sflsock.o(.text+0x75c):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:813: undefined reference to `htons@4'
sflsock.o(.text+0x77e):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:815: undefined reference to `htons@4'
sflsock.o(.text+0x7d1):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:824: undefined reference to `inet_addr@4'
sflsock.o(.text+0x7ee):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:828: undefined reference to `gethostbyname@4'
sflsock.o(.text+0x864): In function `build_sockaddr':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:864: undefined reference to `htonl@4'
sflsock.o(.text+0x879):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:865: undefined reference to `htons@4'
sflsock.o(.text+0x8c5): In function `socket_localaddr':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:894: undefined reference to `inet_ntoa@4'
sflsock.o(.text+0x92c): In function `socket_peeraddr':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:927: undefined reference to `inet_ntoa@4'
sflsock.o(.text+0x98a): In function `socket_nodelay':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:954: undefined reference to `setsockopt@20'
sflsock.o(.text+0x9c5): In function `socket_is_alive':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:998: undefined reference to `getsockopt@20'
sflsock.o(.text+0xa08): In function `socket_error':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1027: undefined reference to `getsockopt@20'
sflsock.o(.text+0xa3d): In function `accept_socket':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1062: undefined reference to `accept@12'
sflsock.o(.text+0xa4e):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1070: undefined reference to `WSAGetLastError@0'
sflsock.o(.text+0xabc): In function `get_sock_addr':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1135: undefined reference to `getsockname@12'
sflsock.o(.text+0xaec):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1140: undefined reference to `gethostbyaddr@12'
sflsock.o(.text+0xb50): In function `get_peer_addr':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1189: undefined reference to `getpeername@12'
sflsock.o(.text+0xb80):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1194: undefined reference to `gethostbyaddr@12'
sflsock.o(.text+0xbe5): In function `read_TCP':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1245: undefined reference to `recv@16'
sflsock.o(.text+0xc43): In function `write_TCP':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1307: undefined reference to `send@16'
sflsock.o(.text+0xc9e): In function `read_UDP':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1365: undefined reference to `recvfrom@24'
sflsock.o(.text+0xcc6):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1370: undefined reference to `recv@16'
sflsock.o(.text+0xd21): In function `write_UDP':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1425: undefined reference to `sendto@24'
sflsock.o(.text+0xd49):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1430: undefined reference to `send@16'
sflsock.o(.text+0xd94): In function `close_socket':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1475: undefined reference to `shutdown@8'
sflsock.o(.text+0xda2):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1476: undefined reference to `closesocket@4'
sflsock.o(.text+0xdef): In function `sock_select':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1531: undefined reference to `select@20'
sflsock.o(.text+0xe27): In function `get_hostname':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1558: undefined reference to `gethostname@8'
sflsock.o(.text+0xe5c): In function `get_hostaddr':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1584: undefined reference to `gethostbyname@4'
sflsock.o(.text+0xe83):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1588: undefined reference to `htonl@4'
sflsock.o(.text+0xea3): In function `get_hostaddrs':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1616: undefined reference to `gethostbyname@4'
sflsock.o(.text+0x126f): In function `sockmsg':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1686: undefined reference to `WSAGetLastError@0'
sflsock.o(.text+0x1640): In function `winsock_last_error':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1757: undefined reference to `WSAGetLastError@0'
sflsock.o(.text+0x1b1f): In function `get_name_server':
C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1967: undefined reference to `htons@4'
sflsock.o(.text+0x1b4a):C:/Impulse/CoDeveloper3/Examples/Tutorials/HelloWorld/sflsock.c:1968: undefined reference to `inet_addr@4'
make: *** [HelloWorld.exe] Error 1

My only goal is to test the sockets that will run on uClinux in desktop simulation, so if you know of a better package I can use on windows that will work for that, then I'd be happy to use it. Otherwise, what is Visual Studios doing that CoDeveloper isn't, and how can I get CoDeveloper to do it?

Thanks,
Jonathan

#2 RalphBodenner

    Advanced Member

  • Admin
  • PipPipPip
  • 348 posts

Posted 25 June 2009 - 04:23 PM

Hi Jonathan,

Looks like SFL sockets are implemented using Windows Sockets (WinSock) on Windows. WSAGetLastError and the usual suspects, such as htons and gethostbyname, are provided by the WinSock library, so you'll have to link it with your desktop simulation. I believe the linker option you'll want is '-lws2_32', which can be added to the "Additional linker options" field in the Project Options dialog's Build tab.

The reason you don't run into this in VS is that it automatically links many Windows libraries if you use the default project settings.

Ralph
Ralph Bodenner
Impulse Accelerated Technologies, Inc.

#3 Jonathan

    Member

  • Members
  • PipPip
  • 25 posts

Posted 25 June 2009 - 05:30 PM

QUOTE (RalphBodenner @ Jun 25 2009, 08:23 PM) <{POST_SNAPBACK}>
Hi Jonathan,

Looks like SFL sockets are implemented using Windows Sockets (WinSock) on Windows. WSAGetLastError and the usual suspects, such as htons and gethostbyname, are provided by the WinSock library, so you'll have to link it with your desktop simulation. I believe the linker option you'll want is '-lws2_32', which can be added to the "Additional linker options" field in the Project Options dialog's Build tab.

The reason you don't run into this in VS is that it automatically links many Windows libraries if you use the default project settings.

Ralph



That did it. Thanks!





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users