typedef struct S_DeviceINFO
{
CString mName[50];
CString mCaption[50];
CString mDeviceID[50];
CString mManufacturer[50];
}S_DeviceInfo;
extern "C" bool _stdcall EXPORT CheckDeviceInfo(CString mCmd,S_DeviceInfo &info);
结构体和函数声明
extern "C" bool PASCAL EXPORT CheckDeviceInfo(CString mCmd,S_DeviceInfo &info)
{
for(int i=0;i++;i<50)
{
info.mName[i]="UUU";
info.mCaption[i]="UUU";
info.mDeviceID[i]="UUU";
info.mManufacturer[i]="UUU";
}
}
cpp里的函数
CheckDeviceInfo @5
.def文件里的导出函数
以上是MFCDLLproject里面的
HMODULE m_hModule;
m_hModule=::LoadLibraryA(".\\ControlV_A.dll");
//m_hModule=::LoadLibraryA("MicTestdll.dll");
if(m_hModule==NULL)
{
AfxMessageBox("fail");
return;
}
typedef bool (__stdcall* GetDeviceInfo)(CString,S_DeviceInfo &);
GetDeviceInfo pInfo;
pInfo=(GetDeviceInfo)::GetProcAddress(m_hModule,"CheckDeviceInfo");
S_DeviceInfo info;
pInfo("hello",info);
其他4个函数都有获取到函数地址,唯一没有获取到的是传结构体的 ,我怀疑是不是传结构体有问题,我的dll里面结构体的申明和调用的project里面的申明一模一样 求大神帮忙解答。。。