VBA DLL c++

contra69005 Messages postés 9 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 13 juin 2012 - 13 juin 2012 à 11:40
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 14 juin 2012 à 20:10
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

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
13 juin 2012 à 13:36
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
0
contra69005 Messages postés 9 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 13 juin 2012
13 juin 2012 à 14:45
Bonjour et merci pour votre aide

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

Cordialement
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
14 juin 2012 à 20:10
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
0
Rejoignez-nous