VBA DLL c++

Signaler
Messages postés
9
Date d'inscription
samedi 7 février 2009
Statut
Membre
Dernière intervention
13 juin 2012
-
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
-
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.

3 réponses

Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Bonjour,

En quoi ta question creesponde à sonc lassement ?

CodeS-SourceS > A propos des sites CodeS-SourceS > Demande d'un nouveau thème de discussion sur CodeS-SourceS

Je déplace sur VBFrance pour l'instant.

As-tu essayé d'utiliser ByRef à la place de ByVal ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
9
Date d'inscription
samedi 7 février 2009
Statut
Membre
Dernière intervention
13 juin 2012

Bonjour et merci pour votre aide

sinon oui j'ai essayé avec ByRef et ca ne marche pas

Cordialement
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Bonjour,

Tu as des printf dans ta DLL, mais où sortent les informations ?

"ca ne marche pas", avec le même effet ?

Comment tu contrôles si les valeurs sont passées ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site