f



How to link obj's from c-source with obj's from c++-source

Hi,

I compiled 2 simple source-files with cl -c main.cpp and cl -c test.c.
test.c contains just a simple function, which is declared in test.h.
test.h is included in test.c and in main.cpp.
When I try to link the objects with link main.cpp test.c -out:prog.exe
I get the error:
"main.obj : error LNK2019: unresolved external Symbol "int __cdecl
greater(int,int)" (?greater@@YAHHH@Z), called in function _main
prog.exe : fatal error LNK1120: 1 unresolved external Symbol"

What have I to do, to be able to link those objects together?

Guido Belligoi

0
DonBlech (2)
10/19/2006 7:49:19 AM
comp.lang.c++ 49423 articles. 7 followers. Post Follow

2 Replies
636 Views

Similar Articles

[PageSpeed] 2

"Guido Belligoi" <DonBlech@web.de> wrote in message 
news:1161244159.510082.56460@b28g2000cwb.googlegroups.com...
: Hi,
:
: I compiled 2 simple source-files with cl -c main.cpp and cl -c test.c.
: test.c contains just a simple function, which is declared in test.h.
: test.h is included in test.c and in main.cpp.
: When I try to link the objects with link main.cpp test.c -out:prog.exe
: I get the error:
: "main.obj : error LNK2019: unresolved external Symbol "int __cdecl
: greater(int,int)" (?greater@@YAHHH@Z), called in function _main
: prog.exe : fatal error LNK1120: 1 unresolved external Symbol"
:
: What have I to do, to be able to link those objects together?

A:      extern "C"


For headers that are to be included both from C and C++ sources,
it is common to surround all declarations with:

#ifdef __cplusplus
extern "C" {
#endif

  int greater(int a, int b);

#ifdef __cplusplus
}
#endif


You could also include an originally C-only header with:
 extern "C" {
   #include "test.h"
 }


IIRC it is also possible to declare an individual function
as extern C:

  extern "C" int greater(int a, int b);



hth-Ivan
-- 
http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
Brainbench MVP for C++ <> http://www.brainbench.com 

0
10/19/2006 8:18:45 AM
Ivan Vecerina schrieb:


a very helpfully answer!

Thank you for the fast reply - it works fine now!!!

Guido Belligoi

0
DonBlech (2)
10/19/2006 8:30:46 AM
Reply: