Author: Uri Blass
Date: 14:37:44 02/24/03
Go up one level in this thread
On February 24, 2003 at 17:27:03, Uri Blass wrote: >On February 24, 2003 at 17:20:25, Dann Corbit wrote: > >>On February 24, 2003 at 17:03:45, Uri Blass wrote: >> >>>On February 24, 2003 at 16:44:24, Dann Corbit wrote: >>> >>>>On February 24, 2003 at 16:27:09, Uri Blass wrote: >>>> >>>>>I try to change my C files to C++ after advice that I got when people told me >>>>>that inline functions are better macro(note that I do not know why they are >>>>>better but I found that C++ give me better warning than C for some reason. >>>>> >>>>>The problem is that for some reason I also get errors that I do not understand. >>>>> >>>>>I get the following errors for some varaibles when I change my C files to CPP >>>>>files >>>>> >>>>>error LNK2001: unresolved external symbol "int * info" (?info@@3QAHA) >>>>> >>>>>Note that it is only for varaibles that I used for them the following trick >>>>> >>>>>int PADDED_info[80]; >>>>>int * const info = PADDED_info+8; >>>>> >>>>>I have in data.h >>>>>extern int * const info; >>>>>I do not understand what is the problem. >>>> >>>>Probably, you have a mix of C and C++ files. >>>>If so, the C++ routines will not see the C functions because of something called >>>>"name mangling" that changes the format of the name that the linker will see. >>>>There are several ways to fix it. Here are two possibilities: >>>> >>>>1. Change all the files to C++ files at the same time. >>>>2. Use extern "C" declarations for the C functions you must access >>> >>> >>>No >>> >>>I have only 4 c files and I changed them to cpp files(the message that I get is >>>only compiling main.cpp and the same for 3 different files when I rebuild >>>movei). >>> >>>Maybe it is better if I have more files and I see that other do it but basically >>>I started by coping the file structure of tscp >>>except the fact that I have only one file for search and evaluation(my >>>evaluation is small and part of it is also done inside makemove because movei >>>evaluate every node). >>> >>>I do not know what is the advantage of having a lot of files. >> >>Delete all the object files and build again. Rename does not change the date of >>the file, typically. If you have converted them all, you should not see this >>problem. > >I think that I did it except the .h files >I deleted all the C files from my project,renamed them to .cpp and added them as >.cpp files. > >Do you suggest that I need to do the same with .h files? > >Uri It does not help I get the same warnings I give the beginning of the compiler comments in the end of this post Note that the warning about evaluate was not in the c command and I can say that the empty controlled statement is intent because I may add things later. Deleting intermediate files and output files for project 'main - Win32 Release'. --------------------Configuration: main - Win32 Release-------------------- Compiling... main.cpp evaluate.cpp C:\unzipped\movei257source\evaluate.cpp(1279) : warning C4390: ';' : empty controlled statement found; is this the intent? boardi.cpp data.cpp Linking... xilink6: executing 'C:\PROGRA~1\MICROS~3\VC98\Bin\link.exe' main.obj : error LNK2001: unresolved external symbol "int * info" (?info@@3QAHA) evaluate.obj : error LNK2001: unresolved external symbol "int * info" (?info@@3QAHA) boardi.obj : error LNK2001: unresolved external symbol "int * info" (?info@@3QAHA) Uri
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.