Passage d'un String dans une DLL C++

cs_Argile92 Messages postés 29 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 30 mars 2009 - 2 mars 2009 à 16:54
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 4 mars 2009 à 20:25
Bonjour à tous.

J'aimerai pouvoir accéder à un fichier texte via une DLL.

Je suis dans Excel, avec l'adresse où se trouve mon fichier texte que j'aimerai ensuite lire dans C++.
Sur tous les forums que j'ai trouvé, il est conseillé de passé l'adresse en BSTR.

Mais ensuite? Comment puis-je ouvrir mon fichier texte?

J'ai essayé de convertir mon BSTR en STRING, mais mon fichier ne s'ouvre toujours pas...

Est-ce que quelqu'un sait comment faire?

Ci-dessous, mon code VB:

Declare Sub main Lib "P:\Documents\ExtractBloom\Debug\ExtractBloom.dll" (ByVal cheminFichier As String)




Sub test()





    Dim cheminFichier As String





    cheminFichier = "P:\Documents\ExtractBloom\Data\1321 JP Equity.txt"
   
    Call main(cheminFichier)






End Sub






Et voici mon code C++:




#include
<stdio.h>



#include






<vector>

#include








#include






<sstream>

#include






<fstream>

#include






<windows.h>

#include






<comdef.h> 



using






namespace
std;


void






_stdcall
main(BSTR cheminFichier) {

string myString = _bstr_t(cheminFichier);

ifstream fichier( myString.c_str() );

string date;

string prix;

vector<string> ListeDate;

vector<


double
> ListePrix;


if
(fichier){

string ligne;


while
( getline(fichier, ligne) ){

fichier >> date >> prix;

ListeDate.push_back(date);

ListePrix.push_back(atof(prix.c_str()));

}

}

}

Merci beaucoup pour votre aide



@++

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mars 2009 à 17:56
param *char comme pour toute API.

Ensuite si c'est pour faire du getline, des stream, du 'string' et toute autre bidulerie de ce genre, autant faire tout en VB.
Quand on fait une DLL pour VB, c'est pour fournir des perfs.

ciao...
BruNews, MVP VC++
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
4 mars 2009 à 20:25
Salut,

Bon déjà je plussois BruNew.

Ensuite, tu as fait attention à extern "C" ? Sinon les fonctions exportées le sont avec des noms décorés, le VB les trouveras pas. Mais tu aurais un message d'erreur.
0
Rejoignez-nous