MFC中已经添加好了C语言编写的文件,如何调用其中的函数和其中的计算出的数据
千辛万苦终于在我做好的MFC中添加了别人的C语言编写的两个.C文件和头文件,经编译没有错误。我需要这两个C文件进行数据计算。小弟刚学编程,不知道怎么调用C文件的函数,例如...
千辛万苦终于在我做好的MFC中添加了别人的C语言编写的两个.C文件和头文件,经编译没有错误。
我需要这两个C文件进行数据计算。
小弟刚学编程,不知道怎么调用C文件的函数,例如按下一个按钮,在按钮关联函数中调用C文件的函数进行计算,具体在怎么弄? 我刚刚试过一种方法,别人说把C文件的函数都添加到对话框的类里面,但真的工作量太大了,整个程序有上万行代码。而且C文件还有好多变量,老是提示我重复定义了。 求助各位!!!
1.我现在调用了main这个函数可以成功,反而调用其他函数不能成功。(好像是C++与C的不同,在函数名称编译后是有改变的,所以无法调用,这个怎么解决)
2.调试看到main函数在跑了,但是我接着在mfc这边想要输出main里面的一个变量,但就是输出来的值总是0,这个变量是在C程序的头文件声明了的,不是static,所以我在mfc应该可以调用呀。
3..另外我调试的时候总是看到很多变量值是0,但是程序是正常运行了的,(在txt文本输出了数值),神奇的是。。过一会调试时看到变量的值又恢复正常的变化了。。。为什么呀? 展开
我需要这两个C文件进行数据计算。
小弟刚学编程,不知道怎么调用C文件的函数,例如按下一个按钮,在按钮关联函数中调用C文件的函数进行计算,具体在怎么弄? 我刚刚试过一种方法,别人说把C文件的函数都添加到对话框的类里面,但真的工作量太大了,整个程序有上万行代码。而且C文件还有好多变量,老是提示我重复定义了。 求助各位!!!
1.我现在调用了main这个函数可以成功,反而调用其他函数不能成功。(好像是C++与C的不同,在函数名称编译后是有改变的,所以无法调用,这个怎么解决)
2.调试看到main函数在跑了,但是我接着在mfc这边想要输出main里面的一个变量,但就是输出来的值总是0,这个变量是在C程序的头文件声明了的,不是static,所以我在mfc应该可以调用呀。
3..另外我调试的时候总是看到很多变量值是0,但是程序是正常运行了的,(在txt文本输出了数值),神奇的是。。过一会调试时看到变量的值又恢复正常的变化了。。。为什么呀? 展开
6个回答
展开全部
可以按照以下方式进行,实行时不分先后。
一、调用函数部分。
1 引入头文件。头文件在C语言中,负责声明函数,及定义相关数据结构等功能。要调用其它C文件中的函数,标准的做法是引用头文件。
2 如果不存在头文件,需要自行编写,也可以在引用文件中自行声明函数。不过后一种并不正规。
3 在声明或引用头文件后,就可以直接调用其函数了。
二、获取计算结果。
1 通过函数返回值获取结果。
2 通过函数参数获取结果。
3 在其它C文件中奖结果存入全局变量,然后通过全局变量获取结果。
以上三种方式均可以实现目的,具体使用取决于C文件的编写方式。对于简单数据类型,且结果单一的情况,一般使用第一种。复杂数据类型,或者需要的结果可能为多个变量的情况,一般使用第二种。不推荐使用第三种,尤其在多线程操作情况下。
一、调用函数部分。
1 引入头文件。头文件在C语言中,负责声明函数,及定义相关数据结构等功能。要调用其它C文件中的函数,标准的做法是引用头文件。
2 如果不存在头文件,需要自行编写,也可以在引用文件中自行声明函数。不过后一种并不正规。
3 在声明或引用头文件后,就可以直接调用其函数了。
二、获取计算结果。
1 通过函数返回值获取结果。
2 通过函数参数获取结果。
3 在其它C文件中奖结果存入全局变量,然后通过全局变量获取结果。
以上三种方式均可以实现目的,具体使用取决于C文件的编写方式。对于简单数据类型,且结果单一的情况,一般使用第一种。复杂数据类型,或者需要的结果可能为多个变量的情况,一般使用第二种。不推荐使用第三种,尤其在多线程操作情况下。
展开全部
你这样吧:首先把你要调用的函数和变量在你的MFC中用的地方声明(格式:extern + 返回类型+函数名+参数)这里的函数和变量(只能是全局的)在c文件中必须是独立的。对于是否能调用main函数,我没有见过。但是为什么要调用main函数呢?
你完全可以把各个函数独立的完成功能。
你完全可以把各个函数独立的完成功能。
追问
比如我在调用其他函数时,比如声明extern void ADCS_Initialise(); 然后调用。
编译通过,linking不通过,显示error LNK2001: unresolved external symbol "void __cdecl ADCS_Initialise(void)" (?ADCS_Initialise@@YAXXZ)
这个是不是C和C++编译之后函数名称是有发生变化的原因,怎么解决呢?
追答
不是的 我说的那种形式是你的c函数在一个文件中可以那样用。
如果那个函数在其他文件中,且已经关闭程序了,就不能这样做了。
就要用到动态链接库。你好好看看这方面的知识,它不难的,耐心看,这个你掌握了,你会有一种自豪感
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你要用c函数的mfc文件上加上
#include "你的.h"
加进去就好了
#include "你的.h"
加进去就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要用extern需要的函数吧
更多追问追答
追问
比如我要调用其中的main函数。。就在mfc的关联函数里面extern void main()? 那如果我希望调用main函数里面的一个变量呢 也是extern int xxxx?头文件需要包含C文件的头文件?不需要包含C文件本身? 但在头文件里面很多变量和函数并没有声明,只有C的实现文件里面有声明和定义。。
追答
也不是这样的吧。。。。具体我也不太清楚,没见过要调用别的文件的mian函数的,extern主要是针对全局变量的,一般是在.c中定义了全局变量,在.h文件中用extern声明下,别的文件include了.h的头文件后就能用了,照你说的,你的文件并没有封装好啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
联系我 我帮你改
做过多次的C 或C++程序转MFC的
做过多次的C 或C++程序转MFC的
更多追问追答
追问
是你么??上次加过你的?百度知道?
追答
还是有问题么?具体什么问题
告诉你了 不能有main函数
其他函数添加到类里
如果不牵扯硬件的话 我可以帮你调好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询