Hey all,
I'm trying to export some of my functions to dll and im having some trouble.

how i created my dll and lib:

Code:
// Define DllExport to declare exported symbols.
#define DllExport __declspec( dllexport )
 DllExport __declspec( dllexport )
 
 

#include <stdio.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include  <commctrl.h>

typedef struct
{
    char secnum[8];
    char xnum[8];
    char xfirst[10];
    char xlast[10];
    char xage[3];
    char xaddress[10];
    char xphone[10];
}Item;

typedef struct phonebook  
{
    char num[4];
    char first_name[10];
    char last_name[10];
    char age[3];
    char address[10];
    char phone[10];
    
} PB;
 
DllExport int adde (int x, int y)
{
    return  (x+y);
}

DllExport int Refresh(FILE *f1,Item ListItem[])
{

  char str2[4];
  int x=0,y=1;
  PB p;
  rewind(f1); 
  
   while  (fread(&p, sizeof(PB), 1, f1)) 
                       {
                         itoa (y,str2,10);
                         strcpy(ListItem[x].secnum,p.num);
                         strcpy(ListItem[x].xnum,str2);
                         strcpy(ListItem[x].xfirst,p.first_name);
                         strcpy(ListItem[x].xlast,p.last_name);
                         strcpy(ListItem[x].xage,p.age);
                         strcpy(ListItem[x].xaddress,p.address);
                         strcpy(ListItem[x].xphone,p.phone);
                         x++;
                         y++;
                        }                                       
  return x;
}
my def file:
Code:
EXPORTS
adde
Refresh
my c file:

Code:
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {
......
int t=-1;
typedef int  (CALLBACK *MYPROC)(int);
typedef int  (CALLBACK *MYPROC2)(FILE*, Item*);
HINSTANCE hinstLib; 
MYPROC ProcAdd; 
MYPROC2 ProcAdd2; 
int fRunTimeLinkSuccess;

....
}

          case WM_COMMAND :
.......
               hinstLib = LoadLibrary("MyProj.dll");

              if (hinstLib != NULL) 
                { 
    
                    ProcAdd = (MYPROC) GetProcAddress(hinstLib, "adde");
                    if (fRunTimeLinkSuccess = (ProcAdd != NULL)) 
                    bla = ProcAdd (4,4); // Works! bla is now 8
                    FreeLibrary(hinstLib); 
.......
    hinstLib = LoadLibrary("MyProj.dll");
              if (hinstLib != NULL) 
                { 
                    ProcAdd2 = (MYPROC2) GetProcAddress(hinstLib, "Refresh");
                    if (fRunTimeLinkSuccess = (ProcAdd2 != NULL)) 
                    t=ProcAdd2 (poi,ListItem); // Doesn't work
                    FreeLibrary(hinstLib); 

}

The function "adde" works fine so im guessing the dll is ok but "Refresh" has a problem.
i don't know if
Code:
t=ProcAdd2 (poi,ListItem);
isn't being executed or that nothing is being returned to "t".
For some reason i can't debug it , as if the code stops at the line
Code:
t=ProcAdd2 (poi,ListItem)
I can debug before that line but if for example i add this line:
Code:
MessageBox(hwnd, "Test", "Test", MB_OK);
after
Code:
 t=ProcAdd2 (poi,ListItem);
I won't see the popup.

Thanks