VBA DLL C++

amine69500 Messages postés 422 Date d'inscription   Statut Membre Dernière intervention   -  
amine69500 Messages postés 422 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai construit une fonction avec C++ dans une dll, et je l'appelle depuis Microsoft Visual Basic (dans Excel) en lui passant des paramètres, mais celui ci n'est pas transmis jusqu'à la fonction Cpp.

Voici mon code :

Fichier fonction.cpp :
#include <stdio.h>
#include <curl/curl.h>
#include"conversion.h"

#include "json_spirit.h"
#include <cassert>
#include <fstream>



void __stdcall create (BSTR bstrPro, BSTR bstrSum, BSTR bstrDesc, BSTR bstrTyp)

{
if (bstrProject == NULL){
printf("bstrProject is null");
}
else if (bstrSummary == NULL){
printf("bstrSummary is null");
}
else if (bstrDescription == NULL){
printf("bstrDescription is null");
}
else if (bstrType == NULL)
printf("bstrType is null");

.
.
.
.
.



}


Fichier fonction.def :
LIBRARY "toto"
EXPORTS
create


Code vba depuis Excel :

Public Declare Function create Lib "toto.dll" (ByVal bstrProj As String, ByVal bstrSum As String, ByVal bstrDesc As String, ByVal bstrTyp As String) As String


Sub test()


'Déclaration du string
Dim bstrProj As String
Dim bstrSum As String
Dim bstrDesc As String
Dim bstrTyp As String


bstrProj = "AM"
bstrSum = "desdsd"
bstrDesc = "trerer"
bstrTyp = "dfgdsg"


'Call la dll
Module1.create bstrProj, bstrSum, bstrDesc, bstrTyp

End Sub



Résultat : Le fichier EXCEL est bien compiler aucune erreur, mais lorsque j'attache le ficher excel.exe sur c++ avec debogage attaché au process, quand je regarde ma dll, mes variables ne sont pas affecter dans ma fonction

Merci pour votre aide.

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
C'est quoi le type BSTR ? il y a peut être une incompatibilité entre ce type et le type string de VB.
0
amine69500 Messages postés 422 Date d'inscription   Statut Membre Dernière intervention   12
 
Bonjour

le BSTR est le type string en VBA


lors de la creation d'une dll en c++ si on souhaite utilisé cette dll en vba, la dll ne comprend pas le string du vba , donc on declare nos variables en BSTR



coridalement
0