标题:如何在VC调用dll中的有参数有返回值的函数
只看楼主
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
结帖率:100%
 问题点数:0 回复次数:1 
如何在VC调用dll中的有参数有返回值的函数
我的dll是这样定义的.
extern "C" _declspec(dllexport) void go()
{
    
}

extern "C" _declspec(dllexport) int went(CString str)
{
    return str.GetLength();
}

在MFC中调用如下:
typedef int (FAR _cdecl *MYWENT)(CString);

void CUsedllDlg::OnOK()
{
    // TODO: Add extra validation here
    HINSTANCE dllinstance;
    dllinstance = ::LoadLibrary("E:\\Development\\C++\\mydll\\Debug\\mydll.dll");
    if(dllinstance == NULL)
    {
        ::AfxMessageBox("None",0,0);
    }
    FARPROC proc;
    proc = ::GetProcAddress(dllinstance,"go");
    if(proc == NULL)
    {
        ::AfxMessageBox("None",0,0);
    }
    else
    {
        proc();
        ::AfxMessageBox("OK",0,0);
    }
    MYWENT went;
    went = (MYWENT)::GetProcAddress(dllinstance,"went");
    if(went == NULL)
    {
        ::AfxMessageBox("NONE",0,0);
    }
    else
    {
******        int i = went("wo");
        ::AfxMessageBox((CString)i,0,0);
    }
    ::FreeLibrary(dllinstance);
    //CDialog::OnOK();
}

*号指示的语句运行后出现Debug Assertion Failed!错误,并要求终止、重试、或取消
哪位知道出什么问题了?先行谢过。
搜索更多相关主题的帖子: 返回值 dll 函数 参数 
2007-12-06 20:55
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
得分:0 
不好意思,原来不是DLL调用的问题.
问题出在了::AfxMessageBox((CString)i,0,0);中整型转为字符串不合法.

实践、学习、再实践、再学习......
2007-12-06 22:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-190835-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.102947 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved