views:

49

answers:

1

I am new in C# programming and trying to call wrap functions that is in C++.

In C++ I have a function of the following prototype

string* swap(string* ptr1, string*ptr2){
    //swap the array of string
    return ptr2;
}

How do I wrap this function into C# (ideally using SWIG, but not necessary)?

A: 

I had the same question for Java.

For Java, I did not find anything pre-packaged and trivial to use. I had to define my own typemaps.

In case you don't get any better answers for C#, you could start with the SWIG/C++ code described at http://stackoverflow.com/questions/3753495/swig-how-to-wrap-stdstring-stdstring-passed-by-reference .

You would need to replace references to Java types, JNI methods (those that include a reference to "jenv"), and "JavaThrowException."

These files from SWIG might also provide some relevant example code for C#:

  • swig/Lib/csharp/std_string.i
  • swig/Lib/csharp/typemaps.i
Andy Thomas-Cramer
String is relatively simple(?) however I do not know how the string[] in c# is structure in memory. They are just continuous buffer with \0 terminators?
leon
Since C# strings are reference types, I would guess that the array is an array of references to non-contiguous string objects. I don't know the easiest way to convert between C# and C++ strings in C++.
Andy Thomas-Cramer