声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3313|回复: 4

[UDF专题] 这个udf编译为什么总是通不过?

[复制链接]
发表于 2007-7-23 17:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
程序如下:

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "udf.h"
DEFINE_CG_MOTION(valve,dt,cg_vel,cg_omega,time,dtime)
{
        if(time<=0.5)
          cg_vel[0]=-0.02;
        else
          cg_vel[0]=0.0;
   
}

为什么总是出现
“nmake”不是内部也不是外部命令,也不是可执行程序。
回复
分享到:

使用道具 举报

发表于 2007-7-24 18:47 | 显示全部楼层
路径问题吧
 楼主| 发表于 2007-7-25 13:15 | 显示全部楼层
能不能说具体点?该放在哪里呢?我的case和udf是在同一个目录下呀!
发表于 2007-7-25 14:58 | 显示全部楼层
论坛里面好象有相关的帖子吧,可以搜索一下
发表于 2007-7-30 00:09 | 显示全部楼层
关于:"nmake"不是内部命令或外部命令,也不是可运行程序
我在编译UDF时出现如下错误:
Error: Floating point error: divide by zero

Error Object: ()

> "nmake"不是内部命令或外部命令,也不是可运行程序
Error Object: ()
Error: open_udf_library:系统找不到指定目录
Error: Floating point error: divide by zero

Error Object: ()


我原来装的时turbo c/c++编译器,可能时环境变量没有设好的缘故。换用vc++6.0以后就没有这个问题了,另外,我用的是fluent6.2.16,希望遇到同样问题的同学借鉴一下,呵呵。
udf编译的经验总结1)安装vc时候,只要选择了“环境变量”这一项,就不需要在“我的电脑 > 属性 > 高级 > 环境变量”中
更改“include”“lib”“path”变量的值,保持默认状态即可;
2)如果是fluent6.1以上的版本,读入你的case文件,只要在define->user-defined->functions->complied中,
add你的udf源文件(*.c)和“udf.h”头文件,然后确定用户共享库(library name)的名称,按“build”,就
相当于nmake用户共享库;在这一步中常出现的错误:
(a)(system "move user_nt.udf libudf\ntx86\2d")0
(system "copy C:\Fluent.Inc\fluent6.1.22\src\makefile_nt.udf libudf\ntx86\2d\makefile")已复制 1 个文件。
0
(chdir "libudf")()
(chdir "ntx86\2d")()
'nmake' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'nmake' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Done.
而点击load时则出现不可编译的错误:
Opening library "libudf"...
Error: open_udf_library: 系统找不到指定的文件。
Error Object: ()
原因:没有安装vc或者没有选择环境变量。
解决方法:安装vc,并选择环境变量;没有正确设置环境变量的,按以下方法:
    . 在我的电脑 > 属性 > 高级 > 环境变量中设置“include”“lib”“path”变量的值,
    . include:D:\Program Files\Microsoft Visual Studio .NET\Vc7\include\
    . lib:D:\Program Files\Microsoft Visual Studio .NET\Vc7\lib\
    . 找到Microsoft Visual Studio .NET\Vc7\bin\cl.exe的动态链接库mspdb70.dll, 将mspdb70.dll的
      路径加入到path的值。
      cl.exe 是 the Microsoft Visual Studio的编辑执行文件,只要正确设置环境变量后,你才能看到以下信息:
      Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
      Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
      usage: cl [ option... ] filename... [ /link linkoption...
(b)(system "move user_nt.udf libudf\ntx86\3d")0
(system "copy C:\fluent.inc\fluent6.1\src\makefile_nt.udf libudf\ntx86\3d\makefile")已复制 1 个文件。
0
(chdir "libudf")()
(chdir "ntx86\3d")()
udf.c
# Generating udf_names.c because of makefile udf.obj
udf_names.c
udf_names.c(7) : error C2059: syntax error : '}'
udf_names.c(8) : warning C4034: sizeof returns 0
我在c里调试已经通过了,但是在fluent编译时出现问题,我该怎么调试呀?
Done.
解决方法:找到一个带udf的例题,如果udf能正确运行,将该例题的udf源文件example.c另存为一个新文件;
           然后,将上面的内容全部删除,将你编写的udf源文件的内容copy到新文件中去,存储这个新文件后,
           最后编译和创建用户共享库(build),就不会出现上述问题了。
   原因:可能是自己编写udf源文件的模板不对,具体原因我也不太清楚,请大家指教了。
  3)然后在define->user-defined->functions->complied中按“load”,即连接共享库到fluent可执行文件中。
请楼主参考一下吧,应该照着做就可以解决这个问题了.

或者你不要用compile编译,用interupt(如果udf比较简单的话)


转自:http://www.blog.edu.cn/user2/bubujia/archives/2006/1432452.shtml

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 09:27 , Processed in 0.069682 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表