我用VC调用 VC编写的动态连接库,
原函数声明方式是:
extern "C" __declspec(dllexport) bool CreateDataTable(SDBSrvPara *pSrvPara);函数实现
__declspec(dllexport) bool CreateDataTable(SDBSrvPara *pSrvPara)
{
return true;
}在另外一个程序用 LoadLibrary 动态加载这个DLL,
加载调用的声明格式是
typedef bool (CALLBACK * PROC_CreatePlugInDataTable)(SDBSrvPara *);SDBSrvPara m_dbSrvPara; //是基本结构体(成员是 char,int基本类型的组合)
HMODULE hDeviceDll;
hDeviceDll = ::LoadLibrary(it->second.c_str()); //加载DLL
if( hDeviceDll != NULL)
{
PROC_CreatePlugInDataTable CreateDataTable =
(PROC_CreatePlugInDataTable)::GetProcAddress(hDeviceDll, "CreateDataTable");
if(CreateDataTable != NULL)
{
bool bResutl = CreateDataTable(&m_dbSrvPara);
}
::FreeLibrary(hDeviceDll); //卸载DLL
}运行到CreateDataTable返回是出现下面的对话框内容.Debug Error!
Program: F:\Test_Srv.exe
Module:
File: i386\chkesp.c
Line:42
The value of ESP was not properly saved across a function call. This is usually a
result of calling a function declared with one calling convention with a funtion pointer declared with a different calling convention.麻烦大家帮忙看看,谢谢 ̄ ̄
原函数声明方式是:
extern "C" __declspec(dllexport) bool CreateDataTable(SDBSrvPara *pSrvPara);函数实现
__declspec(dllexport) bool CreateDataTable(SDBSrvPara *pSrvPara)
{
return true;
}在另外一个程序用 LoadLibrary 动态加载这个DLL,
加载调用的声明格式是
typedef bool (CALLBACK * PROC_CreatePlugInDataTable)(SDBSrvPara *);SDBSrvPara m_dbSrvPara; //是基本结构体(成员是 char,int基本类型的组合)
HMODULE hDeviceDll;
hDeviceDll = ::LoadLibrary(it->second.c_str()); //加载DLL
if( hDeviceDll != NULL)
{
PROC_CreatePlugInDataTable CreateDataTable =
(PROC_CreatePlugInDataTable)::GetProcAddress(hDeviceDll, "CreateDataTable");
if(CreateDataTable != NULL)
{
bool bResutl = CreateDataTable(&m_dbSrvPara);
}
::FreeLibrary(hDeviceDll); //卸载DLL
}运行到CreateDataTable返回是出现下面的对话框内容.Debug Error!
Program: F:\Test_Srv.exe
Module:
File: i386\chkesp.c
Line:42
The value of ESP was not properly saved across a function call. This is usually a
result of calling a function declared with one calling convention with a funtion pointer declared with a different calling convention.麻烦大家帮忙看看,谢谢 ̄ ̄
解决方案 »
- CTime类的时间输出问题,高手帮看看。
- 如何在工具栏以外的区域添加图标用以美化界面
- VC程序员之无法选择的命运
- 求<深入浅出MFC>
- 如何知道一个指针分配到了多少空间啊??
- Activex控件直接插入对话框可用,但不能自己用视图创建,急!!!
- 因重复定票,现多出一张4号下午17:36广州到柳州K36硬卧的火车票:途经韶关,坪石,衡阳,永州,东安,桂林,柳州.票价290大洋(原价)。需
- 哪位知道怎么作出行为像“开始”button那样的button?
- 帮个忙,先,谢了!
- 关于mciSendCommand()函数调用失败,我快烦死啦,HELP!SOS!
- 怎么让窗口中的图形随着窗口变大缩小?
- 高分求《IDL精髓》一书
编译出错..我的解决方法是
在函数声明改为
typedef bool (__cdecl * PROC_CreatePlugInDataTable)(SDBSrvPara *);