- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Forum,
I have been developing applications using eCos and the NiosII IDE for a while now, and wish to develop in c++. I started with the twothreads example and had it up and running in no time. I simply changed the file name from twothreads.c to twothreads.cxx to see what would happen. It compiled OK, but would not run properly. The line of execution appeared to get stuck before the threads got a chance to run (or something). Is there something fundamental that I am missing here? Do I have to indicate the c functions using some construction like: extern "c" { void function_name(void);} Or is there a more basic problem? Thanks in advance for any help provided. peterLink Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Peter,
Try adding the word "externC" before the cyg_user_start function in twothreads.cxx, like this:/* we install our own startup routine which sets up threads */
externC void cyg_user_start(void)
{
diag_printf(" Entering\n");
...
...
}
This should help the linker recognise that you have provided a copy of cyg_user_start, otherwise it will link in the default version. I think externC stops the C++ name-mangler from changing the function name into one that won't link with the code that expects cyg_user_start to be in a module written in C. Mike
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Mike,
This appears to solved the problem. Peter
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page