Really, I don't know what you are doing wrong, because I got it working in a new project on my first try.
Commands.cpp
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "globstruct.h"
#define EXPORT __declspec(dllexport)
#define EXPORTC extern "C" __declspec(dllexport)
// Function pointer typedefs
typedef void (* MakeMemblock_f)(int, int);
typedef void (* WriteMemblockDword_f)(int, int, DWORD);
typedef DWORD (* MemblockDword_f)(int, int);
typedef void (* DeleteMemblock_f)(int);
// Function pointers themselves
MakeMemblock_f dbMakeMemblock = 0;
WriteMemblockDword_f dbWriteMemblockDword = 0;
MemblockDword_f dbMemblockDword = 0;
DeleteMemblock_f dbDeleteMemblock = 0;
GlobStruct* Core = 0;
const char* Dependencies[] =
{
"DBProMemblocksDebug.dll",
};
EXPORT int GetNumDependencies( void )
{
return sizeof(Dependencies) / sizeof(const char*);
}
EXPORT char const* GetDependencyID(int ID)
{
return Dependencies[ID];
}
EXPORT void ReceiveCoreDataPtr(LPVOID CorePtr)
{
// Store the core pointer
Core = static_cast<GlobStruct*>( CorePtr );
// Further initialisation can be carried out here if necessary
dbMakeMemblock = (MakeMemblock_f) GetProcAddress(Core->g_Memblocks, "?MakeMemblock@@YAXHH@Z");
dbWriteMemblockDword = (WriteMemblockDword_f) GetProcAddress(Core->g_Memblocks, "?WriteMemblockDWord@@YAXHHK@Z");
dbMemblockDword = (MemblockDword_f) GetProcAddress(Core->g_Memblocks, "?ReadMemblockDWord@@YAKHH@Z");
dbDeleteMemblock = (DeleteMemblock_f) GetProcAddress(Core->g_Memblocks, "?DeleteMemblock@@YAXH@Z");
}
EXPORTC void MyMakeMemblock(int ID, int Size)
{
dbMakeMemblock(ID, Size);
}
EXPORTC void MyWriteMemblockDword(int ID, int Offset, DWORD Data)
{
dbWriteMemblockDword(ID, Offset, Data);
}
EXPORTC DWORD MyMemblockDword(int ID, int Offset)
{
return dbMemblockDword(ID, Offset);
}
EXPORTC void MyDeleteMemblock(int ID)
{
dbDeleteMemblock(ID);
}
Commands.rc
MY MAKE MEMBLOCK%LL%MyMakeMemblock%id, size
MY DELETE MEMBLOCK%L%MyDeleteMemblock%id
MY WRITE MEMBLOCK DWORD%LLD%MyWriteMemblockDword%id, offset, value
MY MEMBLOCK DWORD[%DLL%MyMemblockDword%id, offset
TestProg.dba
my make memblock 1, 100
my write memblock dword 1, 0, 1234
my write memblock dword 1, 4, 5678
for i = 0 to 4 step 4
print my memblock dword(1, i)
next
wait key
end
Without code - compilable and runnable code - there's no way to debug your problem. As I said, it doesn't have to be your actual plug-in code, but it must have the same problem as your plug-in code and it must be usable runnable code.