回 帖 发 新 帖 刷新版面

主题:同样的源代码不同的编译结果

在编程的时候遇到这样一个问题,在网上找到一个源程序,有工程文件(aa.vfproj)和源文件(.f90后缀),源程序里面用到了一个静态链接库。把源程序下载下来后在ivf里能够调试和运行。但是如果自己新建一个工程文件,然后把源文件加入到这个工程后,调译就通不过,而且问题出现在调用的一个静态链接库里的函数上,不知道为什么?

另外发现用下载的工程文件(aa.vfproj)进行编译时,在Debug文件里面有下面后缀的文件
aa.exe.embed.manifest
aa.exe.embed.manifest.rc
aa.exe.embed.manifest.res
aa.ilk
而自己新建工程的话就没有这些文件产生,猜测上述文件是由于在aa.vfproj里面进行了某些设置产生的

请教下高手们上述问题的解决方案,谢谢!

回复列表 (共4个回复)

沙发

manifest

rc

res

都是与资源有关的文件,所谓的资源,一般来说包括各种图标,对话框,菜单等。

如果你要自己创建工程,除了添加 f90 源代码文件外,最好把 rc 文件添加进去。

另外,通不过编译链接的话,最好是有错误提示,否则别人只能猜测问题所在,而且是没有依据的猜测。

板凳

谢谢 臭石头雪球老师
调试出错信息为“access violation”
出错的提示和资源好像无关
下载的源程序里面也没有资源类文件,直接用原来的工程文件能运行,这是为啥呢?
另外请问下如何上传图片的呀,哈哈

3 楼

.rc 文件就是资源

access violation 出错的可能比较多,比较常见的是未分配的数组,当做参数传递了。

当然,具体原因,还要看了代码才知道

4 楼

最终通过比较发现:
下载的工程文件只能用其对应的静态链接库,我重新自己制作了相同功能的静态链接库后,再新建工程文件,加入下载的源程序文件后,就能够编译运行了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册