在C中调用DLL时无效的参数异常

时间:2019-04-15 09:33:40

标签: c vb.net dll

我正在尝试从Vb.net调用C函数,但是我在一个包含另一个结构的结构的参数上遇到了一个参数异常,我确定该异常来自该参数,因为如果我将其删除,通话成功。

所以我的结构在C中:

typedef struct Point3DTag  {double x, y, z ; } Point3D;
typedef struct coordonnees_verinsTag{
    Point3D pieds[30];
    Point3D tetes[30];
}coordonnees_verins;

我的功能:

void __stdcall articulation_droite2(double *corps2_to_corps1,
                         coordonnees_verins *coordonneesVerins,
                         double* longueurs,
                         int* validite_verins,
                         double precision,
                         int nb_iter_max,
                         double dist_pieds_centreRotation,
                         int* code_retour){
}

我在Vb.net代码中得到了“相同的结构”:

Public Structure Point3D
    Public x As Double
    Public y As Double
    Public z As Double
End Structure

Public Structure coordonnees_verins_art
    Public pieds() As Point3D
    Public tetes() As Point3D
End Structure

我在调用DLL之前初始化数组:

Dim VerinsVirtuels As coordonnees_verins_art
ReDim Preserve VerinsVirtuels.pieds(29)
ReDim Preserve VerinsVirtuels.tetes(29)

Call articulation_droite2(cA2cB_temp(0), _
                                    VerinsVirtuels, _
                                    topo_longueurs(0), _
                                    valid(0), _
                                    0.0001, _
                                    nb_iter_max, _
                                    Dist_piedsVA_centreRot, _
                                    code_retour)
  

异常HRESULT:0x80070057(E_INVALIDARG)

我认为声明此结构时有问题...。 有任何想法吗?

0 个答案:

没有答案