Re: Mathlink and C/C++
- To: mathgroup at smc.vnet.net
- Subject: [mg65841] Re: [mg65737] Mathlink and C/C++
- From: John Fultz <jfultz at wolfram.com>
- Date: Tue, 18 Apr 2006 06:56:37 -0400 (EDT)
- Reply-to: jfultz at wolfram.com
- Sender: owner-wri-mathgroup at wolfram.com
Visual C++, by default, chooses to compile any file with the .cpp extension with the C++ compiler. C++ object files don't link with C files without a little magic. Possible solutions: * Rename the file to a .c file (assuming it really is C and not C++) * Change the extern declaration to extern "C", or simply wrap extern "C" around the entire header file. E.g., #ifndef myheader_h_ #define myheader_h_ 1 extern "C" { extern void myfunc(void); extern void myfunc2(void); } #endif // myheader_h_ 1 * Change the VC++ project to force the file to compile with the C compiler (this is the /Tp switch, I believe). Sincerely, John Fultz jfultz at wolfram.com User Interface Group Wolfram Research, Inc. On Sun, 16 Apr 2006 03:49:16 -0400 (EDT), Goyan wrote: > [This post has been delayed due to email problems - moderator] > > > Hi all, > > Recently I have been trying to compile a program using VC++ 6 and > Mathlink. The source code was originally written by someone else and > under kdevelop for Linux. The source code is in *.cpp format but > actually it is written in C. I've written a wrapper cpp file for using > it in Mathematica. However, when I compile it, it gives the error > message: > > Wrapper.tm.obj : error LNK2001: unresolved external symbol "int __cdecl > myProgram(double *,long,double *,long,int,int,double,double)" > (?myProgram@@YAHPANJ0JHHNN@Z) > Debug/MyProgram.exe : fatal error LNK1120: 1 unresolved externals > Error executing link.exe. > > Has anyone had similar experience before? > > Thank you for your time. > > Regards > > Goyan