martinboecskoer
2008-08-08 15:10:07 UTC
Hi,
i trie to im get a pointer to a dll function to pass it as a callback function pointer to another one. i wrote following dll in visual c++
code\
#include <windows.h>
HINSTANCE h = 0;
// die call library node konfigurerst du so:
// int32 myDLLload(const char* lib)
// lib ist ein Labview-String, den du als const char* übergibst!
extern "C" __declspec( dllexport) int myDLLload(LPCWSTR lib)
{
if(h == 0)
{
h = LoadLibrary(lib);
return 0; // ok
}
return 1; // error
}
// auch hier übergibst du füp proc einen LV-String als char*!
// addr übergibst du als pointer auf int32
extern "C" __declspec( dllexport) int myDLLgetprocaddr(const char* proc, int* addr, DWORD* err)
{
if(h != 0)
{
*addr = (int)GetProcAddress(h, proc);
return *addr == 0; // ok
}
*err = GetLastError();
return 1; // error
}
extern "C" __declspec( dllexport) void myDLLFree()
{
FreeLibrary(h);
h = 0;
}
/code
i passed the parameters for the loadlibary (lib) and getproc... (proc) as a c-string, but it doesnot work. i am not good in writing dlls at all (fortunately there are a lot of nice people in some forums that help a lot :) ) and i just dont know why that doesnot work.
anyone has a clue?
thanx
martin
i trie to im get a pointer to a dll function to pass it as a callback function pointer to another one. i wrote following dll in visual c++
code\
#include <windows.h>
HINSTANCE h = 0;
// die call library node konfigurerst du so:
// int32 myDLLload(const char* lib)
// lib ist ein Labview-String, den du als const char* übergibst!
extern "C" __declspec( dllexport) int myDLLload(LPCWSTR lib)
{
if(h == 0)
{
h = LoadLibrary(lib);
return 0; // ok
}
return 1; // error
}
// auch hier übergibst du füp proc einen LV-String als char*!
// addr übergibst du als pointer auf int32
extern "C" __declspec( dllexport) int myDLLgetprocaddr(const char* proc, int* addr, DWORD* err)
{
if(h != 0)
{
*addr = (int)GetProcAddress(h, proc);
return *addr == 0; // ok
}
*err = GetLastError();
return 1; // error
}
extern "C" __declspec( dllexport) void myDLLFree()
{
FreeLibrary(h);
h = 0;
}
/code
i passed the parameters for the loadlibary (lib) and getproc... (proc) as a c-string, but it doesnot work. i am not good in writing dlls at all (fortunately there are a lot of nice people in some forums that help a lot :) ) and i just dont know why that doesnot work.
anyone has a clue?
thanx
martin