Hallo
Ich möchte aus einer DLL eine Funktion starten. In meiner DLL sieht es so aus:
Laden Tu ich die DLL so
sobald ich dann die anwendung starte, und die funktion, welche in der dll ist, starte, kommen 2 fehlermeldungen und die anwendung stürzt ab:
1. Fehler:
File: dbgheap.c
Line: 1011
Experssion: _CrtIsValidHeapPointer(pUserData)
2. Fehler:
File: dbgheap.c
Line: 1017
Experssion: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
Ich möchte aus einer DLL eine Funktion starten. In meiner DLL sieht es so aus:
Code:
// plugin.h
#define DLL_API __declspec(dllexport)
typedef struct
{
CString strName;
CString strDescription;
CString strCopyright;
CString strWebsite;
CString strText;
int iLetters;
int iLines;
} PLX_Module;
extern "C" DLL_ void apiMain(PLX_Module *Module);
Code:
// plugin.cpp
THOPETO_API void apiMain(PLX_Module *Module)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
PLX_Module Modul;
Modul.strName = _T("sfsdf");
Modul.strDescription = _T("sdfsdfsdf");
Modul.strCopyright = _T("sdfdsfdsf");
Modul.strWebsite = _T("sdfdsfdsfdsfsf");
Modul.strText = _T("Das ist der source");
*Module = Modul;
}
Code:
// In meiner anwendung
typedef struct
{
CString strName;
CString strDescription;
CString strCopyright;
CString strWebsite;
CString strText;
int iLetters;
int iLines;
} PLX_Module;
typedef void (*PFUNC)(PLX_Module*);
BOOL CDlgModule::OnInitModule()
{
SetCurrentDirectory(GetAppPath() + "/Module/");
CFileFind finder;
CString strWildCard = _T("*.dll");
BOOL bWorking = finder.FindFile(strWildCard);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots() || finder.IsDirectory())
continue;
HMODULE hm = LoadLibrary(finder.GetFilePath());
if(!hm)
{
AfxMessageBox("Fehler: Kann folgendes Modul nicht korrekt laden: " + finder.GetFilePath());
}
else
{
m_dwa.Add((DWORD)hm);
PFUNC pFunc = (PFUNC)GetProcAddress((HINSTANCE)m_dwa.GetAt(finder.FindNextFile()), _T("apiMain"));
if(pFunc != NULL)
{
PLX_Module Modul;
pFunc(&Modul); // hier kommt dann ein fehler
}
}
}
return TRUE;
}
1. Fehler:
File: dbgheap.c
Line: 1011
Experssion: _CrtIsValidHeapPointer(pUserData)
2. Fehler:
File: dbgheap.c
Line: 1017
Experssion: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)