[mapserver-users] VisualC++ Experts..

Eduin Yesid Carrillo yecarrillo at hotmail.com
Thu May 17 13:16:52 EDT 2001


Hi list.
Please give me any hint for this error in vc6 and mapsde.c. Micosoft 
Knowledge Base give some workarounds for this error, but I don't know how 
implement them for sg.h (ArcSDE).
All 26 times that mapsde.c call SDE functions, generates this error:

*******
   Creating library mapserv.lib and object mapserv.exp
mapserver.lib(mapsde.obj) : error LNK2001: unresolved external symbol 
_SE_connection_free
mapserver.lib(mapsde.obj) : error LNK2001: unresolved external symbol 
_SE_shape_free
...
mapserver.lib(mapsde.obj) : error LNK2001: unresolved external symbol 
_SE_shape_get_num_parts
mapserv.exe : fatal error LNK1120: 26 unresolved externals
NMAKE : fatal error U1077: '"C:\Archivos de programa\Microsoft Visual 
Studio\VC98\BIN\link.exe"' : return code '0x460'
Stop.
Error executing NMAKE.
*******

>From Microsoft:
http://support.microsoft.com/support/kb/articles/Q123/7/68.asp?LN=EN-US&SD=gn&FR=0&qry=unresolved%20external%20symbol&rnk=6&src=DHCS_MSPSS_gn_SRCH&SPR=VCC

CAUSE
Inline functions are not visible outside of the source file where they are 
defined. The Inline Specifier section in the C++ Language Reference states, 
"Functions that are declared as inline and that are not class member 
functions have internal linkage unless otherwise specified."

RESOLUTION
Here are five possible workarounds:
**Declare the inline function with the extern keyword to force external 
linkage. Note, however, that using extern with class member functions will 
cause a warning with /Ze, and an error with /Za.
-or-
**Move the function definition to the header file so it's included in each 
translation unit used.
-or-
**Remove the inline specification.
-or-
**Force a function version of the inline function to be created in the 
module that it is defined in. You can do this by referencing the address of 
the inline function, by assigning it to a function pointer, or by passing it 
to a function.
-or-
**Remove the /Ob1 (Only Inline) or /Ob2 (Any suitable) option from the 
command line and compile with /Ob0 (Disable). The /Ob0 option is the default 
if no options are specified.

STATUS
This behavior is by design.

Thanks in advanced.

Eduin Yesid Carrillo

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.




More information about the mapserver-users mailing list