| | |
Calling C++ function from C code
Please support our C advertiser: Programming Forums - DaniWeb Sister Site
![]() |
Hello,
I'm quite new here, but there's a problem that needs solution. I think the title says exactly what I want to do. I need to use C for a reason I don't think is this important to mention. I tried searching Google, and found the same solution on most of the results.
After some searching I made a test application using solutions I found... but I can't get it working, I get a linker error.
If it's important: I'm using GCC 4.2.4 on a Linux.
Now some code...
main.c
wrp.h
cppcode.cpp
Linker error I get:
Command I use: gcc main.c -o test
Thanks in advance for Your help.
-Marek
PS. I don't know if this thread belongs to C or C++ forum.
I'm quite new here, but there's a problem that needs solution. I think the title says exactly what I want to do. I need to use C for a reason I don't think is this important to mention. I tried searching Google, and found the same solution on most of the results.
After some searching I made a test application using solutions I found... but I can't get it working, I get a linker error.
If it's important: I'm using GCC 4.2.4 on a Linux.
Now some code...
main.c
C Syntax (Toggle Plain Text)
#include <stdio.h> #include "wrp.h" int main(){ printf("wrapper\n"); wrp(); }
wrp.h
C Syntax (Toggle Plain Text)
#ifdef __cplusplus extern "C" #endif void wrp();
cppcode.cpp
C Syntax (Toggle Plain Text)
#include <iostream> #include "wrp.h" extern "C" void wrp(){ std::cout << "wrapper zakonczyl dzialanie!\n"; }
Linker error I get:
C Syntax (Toggle Plain Text)
/tmp/cc6Irctr.o: In function `main': main.c:(.text+0x1e): undefined reference to `wrp' collect2: ld returned 1 exit status
Command I use: gcc main.c -o test
Thanks in advance for Your help.
-Marek
PS. I don't know if this thread belongs to C or C++ forum.
Last edited by venomxxl; Jan 5th, 2009 at 12:47 pm.
g++ -c cppcode.cpp gcc -c main.c g++ -o test main.o cppcode.o
This is how to mix C and C++
http://www.parashift.com/c++-faq-lit...c-and-cpp.html
In particular, the main() needs to be C++ so that global ctors/dtors get called.
It worked! I can't believe it was so simple
Output:
Thanks a lot!
Output:
C Syntax (Toggle Plain Text)
wrapper wrapper zakonczyl dzialanie!
Thanks a lot!
![]() |
Similar Threads
- Getting error when calling function from main() (C++)
- calling function name? i need help (PHP)
- passing objects as function parameters (C++)
- Function not returning value (JavaScript / DHTML / AJAX)
- problem with calling a function (C++)
- calling a function without changing scope (Python)
- Calling C# function(code behind) from javascript function (ASP.NET)
- Helping with calling a function (C)
- Calling c function from python (Python)
- Still need info on calling a function from bool! (C++)
Other Threads in the C Forum
- Previous Thread: any one have idea about compiler control directives
- Next Thread: Unhandled exception and Access violation for every program
| Thread Tools | Search this Thread |
Tag cloud for C
adobe ansi api array arrays asterisks binarysearch calculate centimeter char convert copyimagefile copypdffile cprogramme creafecopyofanytypeoffileinc createcopyoffile csyntax directory drawing dynamic fflush file fork forloop frequency getlasterror givemetehcodez graphics gtkgcurlcompiling hacking hardware highest homework i/o inches incrementoperators infiniteloop kernel km lazy linked linkedlist linux linuxsegmentationfault list lists locate logical_drives match matrix microsoft motherboard multi mysql number open opendocumentformat opensource owf pattern pdf performance pointer pointers posix power problem probleminc program programming radix read recursion recv repetition research scanf scheduling scripting segmentationfault send sequential shape socketprograming spoonfeeding stack standard string strings structures student systemcall testautomation turboc unix user variable voidmain() wab windows.h






