DLL部分:FloatCalDLL.dll
caculate.cpp
_declspec (dllexport) float floatcalculate(float x,float y,int type)
{
switch(type)
{
case 0:
{return x+y;}
case 1:
{return x-y;}
case 2:
{return x*y;}
case 3:
{return x/y;}
}
}主程序调用DLL部分,在“运算”的消息响应函数添加以下代码:
void CFloatDialog::OnStart()
{
// TODO: Add your control notification handler code here
HINSTANCE hdll;
hdll=LoadLibrary("..\\Debug\\FloatCalDLL.dll");
typedef float (*MyCalculate)(float a,float b,int c);
MyCalculate calfunc; if(hdll!=NULL)
{
calfunc=(MyCalculate)GetProcAddress(hdll,"?floatcalculate@@YAHHH@Z");
}
else
{
AfxMessageBox("无法加载DLL");
return; } UpdateData(true);
m_num3=calfunc(m_num1,m_num2,m_occupation);
UpdateData(false);
FreeLibrary(hdll);
输入数据后点击运算就弹出对话框,应用程序已经停止工作,这是什么原因呢?
m_num3=calfunc(m_num1,m_num2,m_occupation);
=>
if(calfunc)
m_num3=calfunc(m_num1,m_num2,m_occupation);//////////////
calfunc=(MyCalculate)GetProcAddress(hdll,"?floatcalculate@@YAHHH@Z");
,这个也不应该这样写,具体可以网上搜索以下