用C语言写的函数,想用MFC做界面,能直接用MFC调用C函数吗 20

我看网上很多都讲把C编译成dll,MFC新手,望说的详细些。如果要把C编译成dll,用VC可以吗?怎样编译?后边要怎么调用?望有个小例子说明。不要复制粘贴... 我看网上很多都讲把C编译成dll,MFC新手,望说的详细些。如果要把C编译成dll,用VC可以吗?怎样编译?后边要怎么调用?望有个小例子说明。不要复制粘贴 展开
 我来答
hj304huan
2013-09-24 · TA获得超过196个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:104万
展开全部

1、VC可以编译C函数动态库;

2、简单的dll编写例子(以最简单的两数相加函数为例):

    创建工程项目Win32 Dynamic-Link Library.

    加入头文件及源文件比如dll.h dll.cpp,

在头文件中:
#ifndef DLL_H
#define DLL_H
extern "C" int __declspec(dllexport)add(int x, int y);
#endif
在源文件中:
#include "dll.h"
int add(int x, int y)
{
    return x + y;
}
3、dll的简单调用:
#include <stdio.h>
#include <windows.h>
typedef int(*lpAddFun)(int, int); //宏定义函数指针类型
int main(int argc, char *argv[])
{
    HINSTANCE hDll; //DLL句柄 
    lpAddFun addFun; //函数指针
    hDll = LoadLibrary("..\\Debug\\dll.dll"); //这个是你上个工程dll所在的路径,当然你可以直接把DLL拷贝到当前工程,这样直接写hDll = LoadLibrary("dll.dll");
    if (hDll != NULL)
    {
        addFun = (lpAddFun)GetProcAddress(hDll, "add"); 
        if (addFun != NULL)
        {
            int result = addFun(2, 3);
            printf("%d", result);//MFC里面改成AfxMessageBox进行测试
        }
        FreeLibrary(hDll); //用完最后别忘记释放
    }
    return 0;
}

 有不明白的欢迎追问~~

追问

那比如说我做一个这样的窗口

想实现,在上边的编辑框中输入一个名字,按确定按钮后,在下边static中显示hello +名字,确定按钮引用hello.c函数编译成的dll,整体下来要怎么实现,可能回答起来麻烦,但需要一个流程来整体理解下,谢谢!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友78d6a1c
2013-09-24 · 超过35用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:87.9万
展开全部
可以用VC的,你在VC里新建一个MFC的project,把你的C语言写的.c文件加入到MFC工程里编译运行就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huang71216
2013-09-24 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:84.3万
展开全部
完全可以,使用标准C的DLL生产方式 Export,就可以在MFC中使用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-24
展开全部
部分函数可以调用,但是绝大部分都是c++函数!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦阿文
2013-09-24
知道答主
回答量:6
采纳率:0%
帮助的人:8383
展开全部
不清楚,我也不知道,你去百度吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式