| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2438 人关注过本帖
标题:如何在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
快速回复:如何在VC调用dll中的有参数有返回值的函数
数据加载中...
 
   



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

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