09-19-2012
When you want to reference C++ variables in C, you must declare them in C using the wrapper "extern C++ { . . . }", even by way of include file #include lines, and vice-versa with "extern C { . . . }". C++ names are mangled to indicate the type returned and, if method/subroutine/function, the number and types of arguments, for stricter type checking. The original C++ compilers were just preprocessors for the C compiler. If you look at some object code (executables and libraries) using nm, you will see the mangled names of C++ identifiers.
Your make rules need to point to different compiler commands and arguments, using different variables, e.g., not swapping CC from gcc to g++. Sometimes it simplifies things if you use a different directory, or ensure even include files have different suffixes for c++. Try not to make whole new compile lines for every file, but just modify a variable referenced in the common line for moving from one extension to the next. If object file order on linking line is getting to be a pain, remember that code is library files, static or dynamic, is not order sensitive. Even main() can be in a library if all the code in the library serves that main. One class per include file and one subroutine/method/class per non-include file, all compiled -c and non-main() .o put in libraries, is a good practice.
Last edited by DGPickett; 09-19-2012 at 11:47 AM..
8 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi Guys,
i'm beginner in UNIX commands, need some help on this simple question:
I need to make a shell script to move files to another directory,
the criterias are :
1. the range of 4 last digit of the file name is 0100-0199
2. move all files that processed daily (let's say today is... (2 Replies)
Discussion started by: saltshaker
2 Replies
2. AIX
I have a problem with some partitions.
In one of them I have this two fiber channel.
lsdev -Cc adapter
ent0 Available 03-08 10/100/1000 Base-TX PCI-X Adapter (14106902)
fcs0 Available 04-08 FC Adapter
fcs1 Available 05-08 FC Adapter
ide0 Defined 07-08 ATA/IDE... (0 Replies)
Discussion started by: lo-lp-kl
0 Replies
3. UNIX for Advanced & Expert Users
Hi, I'm trying to run the module load command in a Makefile and i'm getting the following error:
make: module: command not found
Why is this? Is there any way to run this command in a Makefile?
NOTE: command - module load msjava/sunjdk/1.5.0 works fine outside of the Makefile (2 Replies)
Discussion started by: hernandinho
2 Replies
4. Solaris
Hi all
I plan to install Solaris 10U6 on some SPARC server using ZFS as root pool, whereas I would like to keep the current setup done by VxVM:
- 2 internal disks: c0t0d0 and c0t1d0
- bootable root-volume (mirrored, both disks)
- 1 non-mirrored swap slice
- 1 non-mirrored slices for Live... (1 Reply)
Discussion started by: blicki
1 Replies
5. Shell Programming and Scripting
Hello Everybody!
My question is how can I mix for example file_a with file_b in the following method:
After 2 lines of file_a put 2 lines from file_b to file_c.
For example:
file_a:
1
2
3
4
5
6
file_b:
11
22 (7 Replies)
Discussion started by: Levi85
7 Replies
6. Homework & Coursework Questions
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
Basically, the prompt is make a makefile with various sub makefiles in their respective subdirectories. All code... (1 Reply)
Discussion started by: Tatl
1 Replies
7. Programming
I am trying to come up with a makefile where the target is linked with object files produced by C and C++ sources.
My setup is Ubuntu/gcc:
$ uname -a
Linux srvr1 2.6.24-24-server #1 SMP Fri Sep 18 17:24:10 UTC 2009 i686 GNU/Linux
gcc version 4.2.4
$ cat main.cpp
#include <iostream>... (6 Replies)
Discussion started by: migurus
6 Replies
8. AIX
Hello,
I'm currently trying to mix local and LDAP users on an AIX 7.1.
I've triied many things.
My LDAP Server in on a CentOS - OpenLDAP (which works fine with linux).
I'm currently stuck on AIX at how to declare LDAP AND Local users.
Here's what i did :
/usr/sbin/mksecldap -c -h 'ldap03'... (15 Replies)
Discussion started by: AIX_user_324891
15 Replies
LEARN ABOUT DEBIAN
sdl-config
sdl-config(1) General Commands Manual sdl-config(1)
NAME
sdl-config - script to get information about the installed version of SDL
SYNOPSIS
sdl-config [ --prefix= DIR] [ --exec-prefix= DIR] [ --version ] [ --libs | --library-libs | --plugin-libs ] [ --cflags ]
DESCRIPTION
sdl-config is a tool that is used to configure and determine the compiler and linker flags that should be used to compile and link pro-
grams, libraries, and plugins that use SDL. It is also used internally by the m4 macros that are included with SDL.
OPTIONS
--cflags
Print the compiler flags that are necessary to compile a program or library that uses SDL.
--exec-prefix=DIR
If specified, use DIR instead of the installation exec prefix that SDL was build with when computing the output for the --cflags,
--libs, --library-libs, and --plugin-libs options. This option must be specified before any of the --cflags, --libs, --library-
libs, and --plugin-libs options.
--libs Print the linker flags that are necessary to link a program that uses SDL.
--static-libs
Print the linker flags that are necessary to statically link a program that uses SDL.
--library-libs
Print the linker flags that are necessary to link a library that uses SDL. (This excludes any static objects required for linking,
since these must be linked only by executable programs.)
--plugin-libs
Print the linker flags that are necessary to link an SDL-using object that is to be accessed via dlopen(3). This may include static
objects with PIC symbol information. This option should not be used for ordinary shared libraries or standalone applications.
--prefix=DIR
If specified, use PREFIX instead of the installation prefix that SDL was built with when computing the output for the --cflags,
--libs, --library-libs, and --plugin-libs options. This option is also used for the exec prefix if --exec-prefix was not specified.
This option must be specified before any of the --cflags, --libs, --library-libs, and --plugin-libs options.
--version
Prints the currently installed version of SDL on standard output.
EXAMPLES
gcc -o main.o $(sdl-config --cflags) main.c
is how you might use sdl-config to compile a C source file for an executable program.
gcc -o my_app $(sdl-config --libs) main.o util.o
is how you might use sdl-config to link compiled objects into an executable program.
gcc -o libSDL_nifty-1.2.so.0.0.1 $(sdl --library-libs) read.o write.o munge.o
is how you might use sdl-config to link compiled objects into a shared library.
gcc -o libnifty_xmms.so $(sdl --plugin-libs) stream.o blit.o deinterlace.o
is how you might use sdl-config to link compiled objects into a plugin for use by another program.
AUTHOR
The Simple DirectMedia Layer (SDL) library was written by Sam Lantinga.
This manual page was written by Branden Robinson, originally for Progeny Linux Systems, Inc., and the Debian Project.
SDL 1.2 2001-12-25 sdl-config(1)