OVH Cloud OVH Cloud

Code ou mot de passe ?

7 réponses
Avatar
Sivaller
j'ai ça :
"
// testdll.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "testdll.h"


__declspec(dllexport) int __stdcall sivallertest(int i,int b)
{
return i*b;
}
"



Le compilateur est censer de me générer une library avec vc++ avec la
routine "sivallertest" exporté.
Rapport :
Le compilateur m'exporte la routine "sivallertest" au nom de
"sivallertest@@YGHHH@Z" au lieu de "sivallertest".

Conclusion sous delphi :
"program Project1;
{$APPTYPE CONSOLE}

function sivallertest(a,b : integer) : integer; stdcall external
'testdll.dll';

begin
// Insérer le code utilisateur ici
writeln(sivallertest(5,20));
readln;
end.
"
Ne peux trouver la routine "sivallertest".

Conlusion :
On ne sait probablement pas créez des library multi-plateform (delphi,vc++).


Quelle (mot de passe) ou syntaxe apparament non documenté dans MSDN faut
t'il entrez dans "testdll.cpp" pour que le compilateur Vc++ m'exporte
la routine "sivallertest" au nom de "sivallertest" ??

cherche toujours ,,,,,

merci,

7 réponses

Avatar
Benoit Dejean
Le Mon, 27 Oct 2003 12:01:34 +0000, Sivaller a écrit :

honnêtement je n'ai pas compris un traître mot de ton message, ce qui
est sans importance vu que tu es totalement Hors-Sujet

fr.comp.os.ms-windows.programmation
Avatar
Erwann ABALEA
Bonjour,

On Mon, 27 Oct 2003, Sivaller wrote:

[... plein de machins VC++, Delphi, DLL ...]
Quelle (mot de passe) ou syntaxe apparament non documenté dans MSDN faut
t'il entrez dans "testdll.cpp" pour que le compilateur Vc++ m'exporte
la routine "sivallertest" au nom de "sivallertest" ??


Tu es complètement hors sujet, mais voici quand même une piste pour te
simplifier la tâche: renomme ton fichier testdll.cpp en testdll.c, ça
supprimera la décoration de nom.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
D'ailleurs, je me demande a quoi cela sert de "quoter" le texte d'un
autre puisqu'un article a toujours la reference de celui auquel il
repond. Et puis, il y a dejanews.... alors....
-+- CB in: Guide du Neuneu d'Usenet - T'avais qu'à suivre -+-

Avatar
Mickael Pointier
Quelle (mot de passe) ou syntaxe apparament non documenté dans MSDN
faut t'il entrez dans "testdll.cpp" pour que le compilateur Vc++
m'exporte
la routine "sivallertest" au nom de "sivallertest" ??


Essaye ca à tout hasard:

================= extern "C"
{
__declspec(dllexport) int __stdcall sivallertest(int i,int b)
{
return i*b;
}

}
=================
Tu es victime de ce qu'on appelle la "décoration".
Les trucs bizard à la fin du nom représentent en fait les informations
de typage de ta fonction (int i, int b, le fait que ca retourne un
int...), qui permet de différencier les différentes fonctions pouvant
avoir le même nom mais des paramètres différents.

Mike

Avatar
Martinez Jerome
Sivaller wrote:

non pas encore :
Ce maudit de compilateur me le remplace par ""

donc on ne peux pas creez de library multi languages .


C'est bizarre, j'en fait assez souvent des lib multi-language...
Un exemple valant mieux qu'un long discours, et mes connaissances etant
limitées (je suis débutant), va faire un download de la DLL sur
http://mediainfo.sourceforge.net

Mes utilisateurs (et moi) l'utilisent avec Visual C++, Borland c++
builder et VisualBasic.
Il y a le .h associé dans le ZIP de la DLL, afin que tu vois comment ca
marche.
C'est tout simple, avec sans doute plein de fautes, mais on parle de
débutant a débutant donc ca ira :))

Avatar
Sivaller
Marche pas du tout avec l'erreur suivants :
"Deleting intermediate files and output files for project 'testdll - Win32
Release'.
--------------------Configuration: testdll - Win32
Release--------------------
Compiling...
StdAfx.cpp
Compiling...
testdll.cpp
G:Program FilesMicrosoft Visual StudioMyProjectstestdlltestdll.cpp(12)
: fatal error C1010: unexpected end of file while looking for precompiled
header directive
Generating Code...
Compiling...
test.c
G:Program FilesMicrosoft Visual StudioMyProjectstestdlltest.c(9) :
fatal error C1010: unexpected end of file while looking for precompiled
header directive
Generating Code...
Error executing cl.exe.
Creating browse info file...
BSCMAKE: error BK1506 : cannot open file '.Releasetestdll.sbr': No such
file or directory
Error executing bscmake.exe.

testdll.dll - 3 error(s), 0 warning(s)
"

stdafx.cpp
"
// stdafx.cpp : source file that includes just the standard includes
// testdll.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

// TODO: reference any additional headers you need in STDAFX.H
// and not in this file
"
test.c
"
// testdll.cpp : Defines the entry point for the DLL application.
//

__declspec(dllexport) int __stdcall sivallertest(int i,int b)
{
return i*b;
};

"
testdll.cpp
"
// testdll.cpp : Defines the entry point for the DLL application.
//

#include <test.h>
#include <stdafx.h>

extern __declspec(dllexport) int __stdcall sivallertest(int i,int b);

void main()
{
};
"

stdafx.h
"
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#if !defined(AFX_STDAFX_H__700BFA72_0869_11D8_8CAF_00609751C747__INCLUDED_)
#define AFX_STDAFX_H__700BFA72_0869_11D8_8CAF_00609751C747__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


// Insert your headers here
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows
headers

#include <windows.h>

// TODO: reference additional headers your program requires here

{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately
before the previous line.

#endif //
!defined(AFX_STDAFX_H__700BFA72_0869_11D8_8CAF_00609751C747__INCLUDED_)
"

test.h
"
"
testdll.h
"
"
ces deux fichiers ci dessus sont vides






Erwann ABALEA a écrit dans le message :

Bonjour,

On Mon, 27 Oct 2003, Sivaller wrote:

[... plein de machins VC++, Delphi, DLL ...]
Quelle (mot de passe) ou syntaxe apparament non documenté dans MSDN
faut


t'il entrez dans "testdll.cpp" pour que le compilateur Vc++ m'exporte
la routine "sivallertest" au nom de "sivallertest" ??


Tu es complètement hors sujet, mais voici quand même une piste pour te
simplifier la tâche: renomme ton fichier testdll.cpp en testdll.c, ça
supprimera la décoration de nom.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
D'ailleurs, je me demande a quoi cela sert de "quoter" le texte d'un
autre puisqu'un article a toujours la reference de celui auquel il
repond. Et puis, il y a dejanews.... alors....
-+- CB in: Guide du Neuneu d'Usenet - T'avais qu'à suivre -+-





Avatar
Sivaller
non pas encore :
Ce maudit de compilateur me le remplace par ""

donc on ne peux pas creez de library multi languages .

Mickael Pointier a écrit dans le message :
bniuak$aa5$
Quelle (mot de passe) ou syntaxe apparament non documenté dans MSDN
faut t'il entrez dans "testdll.cpp" pour que le compilateur Vc++
m'exporte
la routine "sivallertest" au nom de "sivallertest" ??


Essaye ca à tout hasard:

================= > extern "C"
{
__declspec(dllexport) int __stdcall sivallertest(int i,int b)
{
return i*b;
}

}
================= >
Tu es victime de ce qu'on appelle la "décoration".
Les trucs bizard à la fin du nom représentent en fait les informations
de typage de ta fonction (int i, int b, le fait que ca retourne un
int...), qui permet de différencier les différentes fonctions pouvant
avoir le même nom mais des paramètres différents.

Mike




Avatar
Frederic Lachasse
"Sivaller" wrote in message
news:bnj61o$50l$
non pas encore :
Ce maudit de compilateur me le remplace par ""


Je pense que cela vient du __stdcall, qui sont sensé suivre ce type de
nommage (le 8 correspond à la taille des paramêtres sur la pile en octets.
C'est le cas de toutes les API Windows. Un autre langage Windows ce doit de
faire la même chose.

donc on ne peux pas creez de library multi languages .


Bien sûr que oui, mais il faut connaître exactement l'interface binaire des
langages.

Note: extern "C" est une déclaration C++, mais __stdcall est une extention
de Microsoft. Pour plus de renseignement sur __stdcall et comment interfacer
C++ et Delphi, ce forum n'est pas vraiment conseillé. Voir un forum Windows
et/ou Delphi.



Mickael Pointier a écrit dans le message :
bniuak$aa5$
Quelle (mot de passe) ou syntaxe apparament non documenté dans MSDN
faut t'il entrez dans "testdll.cpp" pour que le compilateur Vc++
m'exporte
la routine "sivallertest" au nom de "sivallertest" ??


Essaye ca à tout hasard:

================= > > extern "C"
{
__declspec(dllexport) int __stdcall sivallertest(int i,int b)
{
return i*b;
}

}
================= > >
Tu es victime de ce qu'on appelle la "décoration".
Les trucs bizard à la fin du nom représentent en fait les informations
de typage de ta fonction (int i, int b, le fait que ca retourne un
int...), qui permet de différencier les différentes fonctions pouvant
avoir le même nom mais des paramètres différents.

Mike