extern "C" _declspec(dllexport) int tjjd(_ConnectionPtr m_pConnection, CGeoresource *pGeores)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CJDtjjdDlg dlg(m_pConnection, pGeores);
dlg.DoModal();
return 0;
}调用时:
typedef int (WINAPI *AddNodeDLL)(int _ConnectionPtr, CGeoresource*);
HINSTANCE hmod;
hmod = ::LoadLibrary ("strDllName.dll");
if(hmod==NULL)
{
AfxMessageBox("Fail");
}
AddNodeDLL lpproc;
lpproc = (AddNodeDLL)GetProcAddress(hmod, "tjjd");
if(lpproc == NULL) AfxMessageBox("lpproc is Null");
if(lpproc != NULL)
(*lpproc)(theApp.pComm->connPtr, geoRes);
FreeLibrary(hmod);函数倒是能执行,但执行完就出错,但不穿参数就没有错误.
为什么呀?
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CJDtjjdDlg dlg(m_pConnection, pGeores);
dlg.DoModal();
return 0;
}调用时:
typedef int (WINAPI *AddNodeDLL)(int _ConnectionPtr, CGeoresource*);
HINSTANCE hmod;
hmod = ::LoadLibrary ("strDllName.dll");
if(hmod==NULL)
{
AfxMessageBox("Fail");
}
AddNodeDLL lpproc;
lpproc = (AddNodeDLL)GetProcAddress(hmod, "tjjd");
if(lpproc == NULL) AfxMessageBox("lpproc is Null");
if(lpproc != NULL)
(*lpproc)(theApp.pComm->connPtr, geoRes);
FreeLibrary(hmod);函数倒是能执行,但执行完就出错,但不穿参数就没有错误.
为什么呀?
extern "C" _declspec(dllexport) int __stdcall tjjd(_ConnectionPtr m_pConnection, CGeoresource *pGeores)
则会找不到该函数.
oyljerry(☆勇敢的心☆) 如果如你所说:那我还想用C++的东西,我该怎么办?
--->
typedef int (WINAPI *AddNodeDLL)(_ConnectionPtr, CGeoresource*);
另外我知道我真正错在哪了,把WINAPI换成FAR __cdecl 就好使了
看来是入栈问题,我疏忽了!!
但有一点我还是不懂,我什么好多人多用__stdcall?
"没有这个头是C的约定,在Call函数后面会有ADD ESP xxx"
加上__stdcal后,这条指令就没有了。