05. februar 2015 - 08:03Der er
5 kommentarer og 1 løsning
C# Array til C++ DLL Function
Hej,
Jeg har et maaske simpelt speorgsmaal men synes ikke rigtig jeg kan finde en loesning.
Jeg har en DLL som er skrevet i C++ som jeg proever at kalde i C#. Dette gaar ogsaa fint, men jeg har problemer med parse et array til en vector.
C++ DLL Header: DLL_EXPORT void Function1(int ID,const std::vector<double>& Params);
C++ DLL main.cpp DLL_EXPORT int Function1(int ID,const std::vector<double>& Params) { //Do Something }
I min C# Function har jeg foelgende kode: namespace LVRTCall { public partial class Form1 : Form { [DllImport("CppFunction.dll", SetLastError = true)] public static extern void Function1(int ID, double[] Params);
double[] Params = new double[] { 1, 3, 5, 7, 9 };
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { textBox1.Text = "test"; int i = Function1(1, Params); } } }
Jeg er ret sikkert paa at fejlen ligger i at jeg proever at parse et array til en std::vector i C++?
Det skal lige siges at min CPP DLL fil ogsaa bliver kaldt af et andet CP program og derfor har begraenset muligheder for at aendre i C++ funktionerne - helt klart vil jeg fortraekke ikke at aendre i C++ men derimod aendre i mit C# program.
Haaber noget kan hjaelpe mig i den rigtige retning.
Kan du ikke lave en ny C++ funktion med double array som du kan kalde fra C# og som stopper data ind i en vector<double> og kalder den gamle C++ funktion?
JEg har nu fundet aarsagen til mit memoryleak, og vil gerne godtage det svar, hvis der ikke finden an anden maade at parse array fra C# til vector c++ uden at skulle aendre i mit c++ kode.
"Problemet" ligger i at jeg helst ville undgaa at skulle aendre i min c++ kode. Men jeg tror det er den eneste loesning.
Men tak for input.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.