console程序和MFC exe编译有什么区别?为什么console下的C程序,在MFC exe中运行结果和console下不一样?

52001314 2003-01-22 10:00:53
我在Unix下有几个函数,当放到MFC Appwizard(exe)中的时候,生成的结果和unix下的不一样。
而且
function1(a)
char* a;这样的语法不行,一定要
void function1(char* a);

而当用console的时候,直接把unix下的文件考下来加入项目就行了。语法完全一样,而且结果也一样。

如果函数放在WIN32 static LIBRARY 中,在exe中调用结果和放console中的一样。
如果函数放MFC Appwizard(dll)中,用exe调用,结果和直接放在exe中是一样的。

到底有什么区别?难道编译方式不一样吗?到底哪里不一样?哪位大侠可以解释一下。

在Project Setting->C++中,Project Options,console 和 win32 static library是MLd参数,dll是MD,而EXE是MDd,和这个参数有关系吗?这个参数具体是什么含义?起什么作用?请大侠们帮忙!!
...全文
81 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zark 2003-01-25
  • 打赏
  • 举报
回复
有意思,还没解决啊?

不就700/800行吗?发给我看看吧!

tohny_cn@yahoo.com
52001314 2003-01-25
  • 打赏
  • 举报
回复
呵呵,我编译成WIN32 Dynamical Link Library了,在MFC(exe)中调用,这样就和unix下的结果一样了。

只是想讨论一下,多了解学习一下。


To Zark:算法属于公司机密,无法公布。sorry:(谢谢你参予讨论这个问题.




aben456 2003-01-24
  • 打赏
  • 举报
回复
OS不同
有些函数是有区别的
mengxihe 2003-01-24
  • 打赏
  • 举报
回复
up
52001314 2003-01-24
  • 打赏
  • 举报
回复
WIN32 Dynamical Link Library
WIN32 static LIBRARY
WIN32 Console Application 应该连接的是LIBC.lib

MFC程序连接的是libcmt.lib多线程的库。这样理解对不对?

除了这个,还有什么区别啊?
ruihuahan 2003-01-24
  • 打赏
  • 举报
回复
function1(a)
char* a;这样的语法不行-----这是C++中已经放弃的C语法
52001314 2003-01-23
  • 打赏
  • 举报
回复
to doubleJiang:dll的结果和直接把函数加在MFC exe中是一样的。

如果是放在static lib中调用,结果就和console中产生的结果一样了。



谢谢这么多人参加讨论。不过,函数和界面没关系的。但是不懂为什么结果会不一样,看了这么久,还是没确切的解释。有人曾经遇到过这种情况吗?
DoubleJiang 2003-01-23
  • 打赏
  • 举报
回复
动态连接库不行吗
dizzo 2003-01-23
  • 打赏
  • 举报
回复
Windows程序大致分为两种,控制台程序和GUI程序,控制台程序一般没有图形界面(当然也可以有),GUI就是有图形界面的程序,他当然要加进来很多东西了
用户 昵称 2003-01-23
  • 打赏
  • 举报
回复
对MFC有很多扩展属性,并且不提倡原先的那种函数声明风格。
Luxm 2003-01-23
  • 打赏
  • 举报
回复
VC在console下和标准C++是兼容的,但在MFC中MS采用了很多自己特有的东西,这些和标准C++是不兼容的。
akiy 2003-01-23
  • 打赏
  • 举报
回复
我认为标准c发展向两个分支,由于系统内核的差异使编译器存在差异(不仅仅是语法问题),所以才有了移植的问题。
要想方便移植就只能向标准的靠拢
loopyifly 2003-01-23
  • 打赏
  • 举报
回复
学习而来
52001314 2003-01-23
  • 打赏
  • 举报
回复
编译都通得过。运行效果不一样。可能是链接的库不一样吧。

MFC Appwizard Wizard(dll)的结果和WIN32 Dynamical Link Library的不一样。

WIN32 Dynamical Link Library
WIN32 static LIBRARY
WIN32 Console Application 是一样的结果。

MFC Appwizard (exe)
MFC Appwizard (dll)一样,是另一种结果。
devil97518 2003-01-23
  • 打赏
  • 举报
回复
gz..............
zPerry 2003-01-23
  • 打赏
  • 举报
回复
把文件后缀由 .cpp 改为 .c ,
function1(a)
char* a;
应该能通过吧
3252889 2003-01-23
  • 打赏
  • 举报
回复
或许是用的库不同
Zark 2003-01-23
  • 打赏
  • 举报
回复
function1(a)
char* a

这样的语法最古老的C的声明方法,在C++是不认的.VC可以编译C或是C++,如果你的文件后缀是.c则用C编译器,如果是.cpp则用C++编译器.

由于MFC方式中只能用C++编译器,所以上述语法是错误的.

至于在MFC中的结果和console中不一样,99%不会出现这样的情况.但也许你是属于那例外的1%.原因是多样的,否则那些专门做的移植的程序员就没饭吃了.
microyzy 2003-01-22
  • 打赏
  • 举报
回复
c->c++??
看来得详细看看代码的
52001314 2003-01-22
  • 打赏
  • 举报
回复
和界面没有关系。

函数是一个加密算法。因为有7、8百行,所以无法详细去看。
而且有些算法难以理解。包括从8位扩展为64位等.....

如果是什么函数,应该会有提示。

运行没问题,但是加密完结果不一样。郁闷!
加载更多回复(2)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧