调用DLL中函数出错
本人从MSDN上下载了一个串口通信DLL的,部分函数如下:
CWinThread* m_pThread; // 代表辅助线程
volatile BOOL m_bConnected;//表示连接否,用来标识菜单串口连接和断开连接是否可用
volatile HWND m_hTermWnd;//辅助窗口
volatile HANDLE m_hPostMsgEvent; // 用于WM_COMMNOTIFY消息的事件对象
OVERLAPPED m_osRead, m_osWrite; // 用于重叠读/写
// 串行口句柄
int m_nBaud;//数据传输速率
int m_nDataBits;//数据位
BOOL m_bEcho;//表明本地回显
BOOL m_bNewLine;//表明自动换行
int m_nParity;//校验位
CString m_sPort;//串行端口
int m_nStopBits;//停止位
HANDLE fp; //打印机句并
FILE *hp;
HANDLE _stdcall OpenConnection(int ipt)
{
HANDLE m_hCom;
COMMTIMEOUTS TimeOuts;
DCB dcb;
m_nBaud = 9600;
m_nDataBits = 8;
m_bEcho = FALSE;
m_bNewLine = FALSE;
m_nParity = 0;
m_sPort = "COM1";
m_nStopBits = 0;
。。。。。。
}
DWORD _stdcall ReadComm(HANDLE m_hCom,char* buf, DWORD dwLength)
{
DWORD length=0;
COMSTAT ComStat;
DWORD dwErrorFlags;
。。。。。。
}
DEF定义函数如下:
OpenConnection
ReadComm
WriteComm
CloseConnection
ClosePalPort
PalPortInit
PrnStr
open_hp
close_hp
我采用显性动态链接的方法调用
typedef void (*lpFun)(void);
HINSTANCE hDll;
hDll = LoadLibrary("port_dll.dll");
if (NULL==hDll)
{
MessageBox("DLL加载失败");
}
lpFun addFun;
lpFun pOpenConnection = (lpFun)GetProcAddress(hDll,"OpenConnection");
if (NULL==pOpenConnection)
{
MessageBox("DLL中函数寻找失败");
}
pOpenConnection();
}
结果出现错误:
The value of ESP was not properly saved across a function call.This is usually a result of calling a funcition decleared wiht one calling convention with a funtion pointer decleared with a different calling convention
高人给说下具体那里应该改改,调用我套用另外一个例子的,但是总出问题,刚开始学VC和MFC,遇到DLL算是头蒙了