Re: MathLink and C++ (can mathlink handle C++?)
- To: mathgroup at smc.vnet.net
- Subject: [mg3722] Re: MathLink and C++ (can mathlink handle C++?)
- From: sherod at boussinesq.Colorado.EDU (Scott Herod)
- Date: Wed, 10 Apr 1996 02:14:00 -0400
- Organization: University of Colorado at Boulder
- Sender: owner-wri-mathgroup at wolfram.com
I got this to work although admittedly on a simple example. I'll include the
files here which hopefully will help. (Note: cc is the C compliler and CC is
the C++ compiler.)
Scott Herod
===========================================================
addtwo.tm:
------------------------
:Begin:
:Function: addtwo
:Pattern: AddTwo[i_Integer, j_Integer]
:Arguments: {i,j}
:ArgumentTypes: {Integer, Integer}
:ReturnType: Integer
:End:
-------------------------
Makefile:
-------------------------
mathdir = /tools/math
mlincludes = $(mathdir)/Source/Includes
mllibrary = $(mathdir)/Bin/MathLink
libml= -lMLelf -lsocket -lnsl
addtwo.tm.o:
$(mathdir)/Bin/MathLink/mprep addtwo.tm > $*.c
cc -c $*.c -I$(mlincludes) -o $@
addtwo.o: addtwo.cc
CC -c $*.cc -I$(mlincludes) -o $@
addtwo: addtwo.o addtwo.tm.o
cc addtwo.o addtwo.tm.o -I$(mlincludes) -L$(mllibrary) $(libml) -lm -o $@
-------------------------
addtwo.cc:
-------------------------
#include "mathlink.h"
#include <string.h> // for memset and memcpy
extern "C" {
int addtwo(int i,int j)
{
return i+j;
}
int main(int argc, char** argv)
{
return MLMain(argc, argv);
}
void bzero(char* b, int n)
{
memset(b,0,n);
}
void bcopy(char* s,char* d,int n)
{
memcpy(d,s,n);
}
}
=================================================
Mathematica 2.2 for SPARC
Copyright 1988-94 Wolfram Research, Inc.
License valid through 31 Dec 1996.
-- Open Look graphics initialized --
In[1]:= addlink = Install["addtwo"]
Out[1]= LinkObject[addtwo, 1, 1]
In[2]:= AddTwo[4,5]
Out[2]= 9
================================================
In article <4kd3eu$93v at dragonfly.wolfram.com>, penano at physics.ucla.edu (Penano Joe) writes:
|> Hi everyone,
|>
|> Does anyone know if it's currently possible to intstall an
|> external C++ function through mathlink? The function
|> I'm considering is very simple. It takes 3 doubles and returns 2
|> doubles. I've tried defining the function as an extern in C and
|> passing the C program to mathlink but it can never find the C++
|> function. Any help would be greatly appreciated.
|>
|> Thanks,
|>
|> --
|> Joe Penano
|> email: penano at physics.ucla.edu
|>
|>
|>
==== [MESSAGE SEPARATOR] ====