hello again

i have mac computer and i have xcode on it. i am looking for some use full beginners books or tutorials. Right from start i have no previous knowledge of c++. can any one suggests any book for site for beginners which specially deal with g++ and xcode.
thankyou

Dani AI

Generated

This thread highlights two very common beginner traps when using Xcode for simple C++ work: (1) a linker error caused by more than one translation unit defining the program entry point, and (2) “no visible output” because the executable exits immediately or stdout isn’t being observed. ran into both; helpful pointers came from , , and . The notes below tie those ideas together into Xcode-specific checks and a short diagnostic flow.

If the linker reports a duplicate main symbol, it means two compiled source files each provide an entry point. In Xcode, look for stray source files created by a template (Carbon/Cocoa templates often add a main), then inspect the target’s Build Phases -> Compile Sources list and remove any file that should not be compiled into that target. Also check per-file Target Membership in the File Inspector. After pruning sources, perform a Clean and, if the error lingers, delete the project’s Derived Data so stale object files are not reused.

A blank console can be either an I/O visibility issue or simply that the program ran and exited too quickly. Console output from a GUI app may not appear where expected; the Xcode Debug area must be visible to show stdout. A reliable way to confirm runtime behavior is to locate the built product in Finder and run that executable from Terminal so output and exit behavior are obvious. For early learning, a Command Line Tool target (or a command-line build with the system compiler) removes template-generated mains and clarifies compile/link steps.

Quick checklist: prefer a Command Line Tool target for console tests; ensure exactly one source defines main; review Build Phases -> Compile Sources and Target Membership; Clean and remove Derived Data when linker results look stale; run the built binary in Terminal to verify stdout. These steps reflect the same resolution path that ultimately worked for .

Recommended Answers

All 18 Replies

The documentation will be your best bet for learning your particular implementation. For learning C++, you would be wise to stick to books that follow the standard language closely. "Accelerated C++" is a good choice.

Read the Read Me threads at the beginning of this board because they contain a wealth of information about books, compilers and other related resources.

thanks for advice
i tried very basic program with Xcode which is like this

#include "hello5.h"
#include "iostream"
using namespace std;

int main1()
{
cout <<"welcome";
return 0;
}

build is successful but when i "Run" it opens only a blank screen without displaying welcome which i am expecting.
i don't understand where i am going wrong.

You don't need #include "hello5.h" do you?

int main1() should be int main() but as the poster above me stated that particular include file is not necessary. Also, #include "iostream" should be #include <iostream> Quotes are generally used to reference headers that require an absolute path or headers in your project.

now i remove #include"hello5.h" and i change to #include<iostream> still same blank screen. As shawn suggested when i change int main1() to int main()
this error message it giving thats why i changed to to int main1() before to bypass. error message is
Line Location Tool:0: Command /Developer/usr/bin/g++-4.0 failed with exit code 1
Line Location Tool:0: duplicate symbol _main in /Users/harpreetsingh/hello5/build/hello5.build/Release/hello5.build/Objects-normal/i386/hello5.o and /Users/harpreetsingh/hello5/build/hello5.build/Release/hello5.build/Objects-normal/i386/main.o
Line Location Tool:0: Command /Developer/usr/bin/g++-4.0 failed with exit code 1
Line Location Tool:0: duplicate symbol _main in /Users/harpreetsingh/hello5/build/hello5.build/Release/hello5.build/Objects-normal/ppc/hello5.o and /Users/harpreetsingh/hello5/build/hello5.build/Release/hello5.build/Objects-normal/ppc/main.o

any help is appreciated
thank you

>>Quotes are generally used to reference headers that require an absolute path or headers in your project
Most (but not all) compilers use angle brackets to reference header files that are in the compiler's known directories, such as the compiler's include directory and double quotes are used to reference all other header files, such as those you write yourself and are in your project's source code directory. On the otherhand, I have used compilers that treat angle brackets and quotes the same.

>>duplicate symbol _main
you are getting a blank sceen because there were compile errors. You can not execute the program until after your compiler produces 0 errors and links successfully.

If you get that error message then you are not posting your entire program. You can have only one main() function in a program -- actually that really applies to every function that have the same list of parameters.

thanx for quick response dragon this what i did when i opened new project. after clicking on "new project" i selected "carbon c++ standard application" and name the project. [i tired it with carbon c++ application too} then and open new file and selected "C++ file" from assistant window and wrote that program.
[ i am using Xcode]

thank you

compile was successful with 0 errors

compile was successful with 0 errors

Great going! :) Now you should see the correct output on the screen.

i know it is so frustrating. but i am having same damn blank screen even after Build was successful and compile errors 0

>>i am feeling dumb
Don't feel too bad -- we all go through that learning curve.

Please post your most recent code. You probably need to add a line at the bottom of main() just before return to make it wait for you to see the output.

int main()
{
...
   cin.get(); // get key 
   return 0;
}

this is the recent code i am trying to "Run"

#include <iostream>
using namespace std;

int main()
{
cout <<"welcome";
return 0;
}

But with same error message about "int main()"

This is code with successful Build and 0 error messages

#include <iostream>
using namespace std;

int mainfunction()
{
cout <<"welcome";
return 0;
}

And i tried this code as well

#include <iostream>
using namespace std;

int mainfunction()
{
cout <<"welcome";
cin.get();
return 0;
}

producing same blank screen.

i am suspecting that something is wrong with creating new project and new file. just a hunch
thank you for your enormous help

int main() is the correct entry point.

>duplicate symbol _main in...

You probably just need to clean your build (remove all those object files ie *.o - look for or create a 'clean' rule in your makefile if using one or a 'clean' option in whatever ide you're using) and then rebuild - your linker is possibly just getting confused with an earlier object. Make sure you comment out or remove all the other superfluous code before rebuilding, ie your source file should only contain:

#include <iostream>
using namespace std;

int main()
{
cout <<"welcome";
return 0;
}

Thanx Comrade
i did tried as u suggested clean the build and build again. i am getting following error message

Line Location Tool:0: Command /Developer/usr/bin/g++-4.0 failed with exit code 1
Line Location Tool:0: duplicate symbol _main in /Users/harpreetsingh/hello1/build/hello1.build/Release/hello1.build/Objects-normal/ppc/firstprogram.o and /Users/harpreetsingh/hello1/build/hello1.build/Release/hello1.build/Objects-normal/ppc/main.o


if i change it to int mainfunction() it seems everything works just fine no error message and build successful but it producing blank screen.

as Comrade Ogilvy said :: int main(void) is the correct entry point. I don't know the ide you are using but from the output you posted it seems that you have 2 object files {firstprogram.o and main.o} which i guess that derive from 2 source files {firstprogram.c and main.c}... and in both source files you have a main function which is wrong{you can't have more than one entry point in your program}... so try to delete one of the .c files and in the other one paste this code::

#include <iostream>
using namespace std;

int main()
{
    cout <<"welcome";
    return 0;
}

ps:: if this is the first time you are programming maybe you shouldn't start with an IDE but compile from the command line....
To do so use g++ your_file.c -o your_program where your file is the input file {i.e main.c -- you can write this file with a text editor} and your_program is the name of the executable {could be runMe or whatever you want}...
To run your compiled program type: ./your_program hope i helped
-nicolas

Thanks Nicolas

It really helped and lead me to fix the problem. Now everything is working fine. I was creating project at wrong place. it was like 1st grade kid try to work with post graduate books. Now i move to command line utility and it worked.
Thanks everyone who took time to help me.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.