J'ai essayé de créer une dll à partir d'un programme écrit en c++. Le probleme tout marche s'il ya pas de paramétres à passer. J'ai appelé cette dll en créant un petit programme en vb.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
   ' C++
 
#include "Def.h"
#include <stdio.h>
#include <string.h>
 
 
void __declspec(dllexport) HelloWorld(void)
{
    MessageBox(NULL,"Hello !","Message",MB_OK);
} 
 
void __declspec(dllexport) ReadFILE(char *argv[]) 
{
FILE * fichier;char *td[30]; int i, nbo;
/* Ouverture d'un fichier */
fichier = fopen( "c:\\test04.txt", "rb");
//fichier = fopen(argv[0]);
printf("\nxxxxxxxxx%s\n", fichier);
if( fichier==NULL )
    printf("\nErreur en lecture de %s\n", "c:\\test04.txt");
else
{
    /* Lecture en une seule instruction */
   nbo = fread( td, sizeof(char), 30, fichier);
   printf("%d 111 elements lus a partir de %s\n", nbo, "c:\\test04.txt");
   printf(" %s", td);
   for( i=0; i<nbo; i++) printf(" %s", td[i]);
   printf("\n");
   fclose( fichier);
}
}
 
void __declspec(dllexport) WRITEFILE (char * pfichier)
{
char t1[30]; int i;
FILE * fichier;
/* Ouverture d'un fichier */
fichier = fopen( "c:\\test04.txt", "wb");
if( fichier==NULL )
    {
    printf("\nErreur en lecture de %s\n", "c:\\test04.txt");
    }
else
    {
     for (i=0;i<=29;i++)
	{
	 strncpy (t1,"test",30);
	 fwrite (t1,sizeof(char),30,fichier);
	}
     }
fclose(fichier);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 ' en vb
Option Explicit
 
 
 
Private Declare Sub HelloWorld Lib "Test2.dll" Alias "?HelloWorld@@YAXXZ" ()
Private Declare Sub ReadFile Lib "Test2.dll" Alias "?ReadFILE@@YAXXZ" () '(ByVal p_var1 As Integer, ByVal p_Var2 As Variant)
Private Declare Sub WriteFile Lib "Test2.dll" Alias "?WRITEFILE@@YAXPAD@Z" (ByVal p_var1 As String)
 
Private Sub Command1_Click()
  Dim l_tab() As String
  ReDim l_tab(2)
  l_tab(1) = "TEST"
  l_tab(2) = "TEST1"
  WriteFile "c:\\test04.txt"
End Sub