Jacob,

Yep!  That did it. Thank you very much!

TJB

On Thursday, 31 May 2012 at 06:19:34 UTC, Jacob Carlborg wrote:
On 2012-05-30 21:20, TJB wrote:
Hello!

I am still wet behind the ears with D. I am trying to interface to an
existing C library from the R standalone math library
(www.r-project.org). I can call the library quite easily from a C++
program as follows:


#include <iostream>
#include <time.h>
#define MATHLIB_STANDALONE
#include "Rmath.h"

using namespace std;

int main() {
int i, n;
double sum, x;
time_t tt;

tt = time(NULL);

set_seed(tt, 77911);

cout << "How many random normals to find the mean? ";
cin >> n;

sum = 0.0;
for(i = 0; i < n; i++) {
sum += rnorm(0, 1);
}

cout << "mean is " << sum/n << endl;

return 0;
}

I can compile this with:

$ g++ -o rnorm rnorm.cpp -I /usr/include -L /usr/lib -lRmath -lm

When I grep rnorm from the Rmath.h header file I get:

$ grep rnorm Rmath.h
#define rnorm Rf_rnorm
double rnorm(double, double);

I have written D code to call this as follows:

import std.stdio;

extern (C) double rnorm(double, double);

void main() {
writeln(myfunc(0.0, 1.0));
}

double myfunc(double a, double b) {
return rnorm(a, b);
}

But I don't know what I need to do to compile it. What flags do I add?
What else do I have to do?

Thanks for your help!



You just need to link to the external libraries.

$ dmd rnorm.d -L-L/usr/lib -L-lRmath -L-lm


Reply via email to