Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: question about errors when I change my C code to C++

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.