|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||||||||
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 74 ![]() |
Bonjour à tous,
J'ai besoin d'utiliser une dll faite en delphi dans un projet C++. Je fais quelques test avec une dll bidon et un projet bidon, juste pour avoir le principe de base, mais je rencontre différents problèmes. Visiblement le load de la DLL, et le load des fonctions de passe correctement, par contre la récupération des résultat ce n'est pas pareil. Tout d'abord, une fonction delphi qui me retourne une variable de type PChar (on m'a dit qu'il fallait du pchar pour le C++, mais je n'en suis pas plus certain) Code :
Code :
J'ai un soucis également avec une fonction de même type, mais qui retourne de l'integer. la fonction delphi Code :
Code :
Code :
Error 1 error C2440: '=' : cannot convert from 'test_apidll::Form1::TestFunc' to 'int' Je suis sur qu'il n'y a pas grand chose à faire pour que celà tourne, mais vu le nombre d'années qui me séparent de ma courte pratique du C++ ... je ne trouve pas. Quelqu'un peut-il m'aiguiller, ou mieux, me corriger ce bout de code ? Merci d'avance. |
||||||||
|
|
00
|
|
|
#2 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 553 ![]() |
Bonjour,
le message d'erreur est plutôt explicite : tu essayes de mettre dans un int un pointeur pour fonction. fntest c'est un pointeur sur fonction, resulttest c'est un int, pas besoin d'aller plus loin pour voir que ça match pas. Pour appeler la fonction, il faudrait quelque chose comme (*pfntest)(); |
|
|
00
|
|
|
#3 | |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 74 ![]() |
Citation:
Bon, l'utilisation de la fonction qui retourne un int est OK. Par contre, j'ai toujours mon soucis avec la fonction qui retourne une chaine de caractère. |
|
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Inscription : août 2010 Messages : 531 ![]() |
|
|
|
00
|
|
|
#5 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 553 ![]() |
|
|
|
00
|
|
|
#6 | |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 74 ![]() |
Citation:
Que dois-je donner comme typedef à ma fonction pour qu'elle me retourne un wchar ? typedef wstring (*TestPCharFunc)(); ==> plantage à l'exécution typedef wstring* (*TestPCharFunc)(); ==>erreur de compil |
|
|
|
00
|
|
|
#7 | |
|
Membre émérite
![]() Inscription : août 2010 Messages : 531 ![]() |
Citation:
J'ai vu dans ton code que tu passais par une std::string, donc j'ai proposé std::wstring. Mais pour remplacer ton char*, tu dois mettre wchar_t*. |
|
|
|
00
|
|
|
#8 | |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 74 ![]() |
Citation:
ça marche. @Bousk, merci pour le lien ... très instructif, même si pas forcément évident à assimiler en 5 min. le C++ à l'air plus "tordu" que delphi, mais j'ai l'impression que c'est vachement plus structuré et logique une fois qu'on s'y connait un peu. Je note comme résolu. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com