Salut,
Je dois faire un wrapper c++ vers c#. J'ai fais un petit example avec une methode qui returne tab double . J'ai le probleme avec declenchement cette methode dans le c#.
Si c'est possible quel'un peut regarder mon code ?
Je serai reconnaisante de l'aide
Mon code dans le c# :
Form1.cs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WrapperTab { public partial class Form1 : Form { public Form1() { InitializeComponent(); Run(); } public static void Run() { double[] dane = new double[30]; #region Dane dane[0] = 2.3; dane[1] = 2.4; dane[2] = 4.5; dane[3] = 5.5; dane[4] = 5.5; dane[5] = 6.7; dane[6] = 5.6; dane[7] = 4.5; dane[8] = 5.5; dane[9] = 4.4; dane[10] = 2.3; dane[11] = 2.3; dane[12] = 4.5; dane[13] = 5.5; dane[14] = 5.5; dane[15] = 6.7; dane[16] = 2.4; dane[17] = 4.5; dane[18] = 5.5; dane[19] = 5.5; dane[20] = 6.7; dane[21] = 5.6; dane[22] = 4.5; dane[23] = 5.5; dane[24] = 4.4; dane[25] = 2.3; dane[26] = 2.3; dane[27] = 4.5; dane[28] = 5.5; dane[29] = 5.5; #endregion Dane double[] wynik = new double[30]; wynik = UnsafeNativeMethods.fun(dane); // ????? for (int i = 0; i < 30; i++) { MessageBox.Show(wynik[i].ToString()); } } } }
Class1.cs
code in c++ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace WrapperTab { internal static class UnsafeNativeMethods { const string dllLocation = "D:\\TestWrapperTab\\WrapperTab\\WrapperTab\\TestWrapperTab.dll"; [DllImport(dllLocation)] public static extern double[] fun(double[] tab1); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include "stdio.h" #include <iostream> extern "C" { __declspec(dllexport) double* fun(double tab1[30]) { double tabWyn[30]; for(int i =0; i<30;i++) { tabWyn[i]=tab1[i] + 5; } return tabWyn; } }
Amicalement
agatte
Partager