From: David P. <dpi...@me...> - 2009-12-15 17:14:29
|
Hi All: I am swigging a c project to C# now. In my c project, i have two structure definition for A and B typedef structure A{ C* file, double x, double y, ...} typedef structure B{double x, double y, double z} and a function declaration A* foo(int size, B* array); How to swig the c project? What i did is: 1) in the .i file, use %include <windows.i> %include <typemaps.i> %include <carrays.i> %include <arrays_csharp.i> %include <cpointer.i> %include "typecasts.h" %include <libcstl.i> %array_class(double, doubleArray); %array_class(EQUIV, equivArray); %array_class(int, intArray); %array_class(float, floatArray); %array_class(B, BArray); ... ... 2) call function foo at c# project in the way BArrary b = new BArray(10); // init element A a = new A(); a = foo(B.cast()); 3) all the code compile well but give "AccessViolation" error in the foo calling. b looks like is ok. error happened at a. I am not clear how to process A in this situation. Anybody can give some clues? This code should not compile in the first place. The foo() function takes two parameters, but you only passed one parameter. |