CRuby作为嵌入式脚本语言fclose()错误的妥协方案
来源:互联网 发布:微信扫码群发营销软件 编辑:程序博客网 时间:2024/06/01 12:52
问题描述:
在Windows下面使用Ruby(CRuby)作为嵌入式脚本语言时,使用fclose会出问题。
问题原因:
在win32.h头文件中定义了
#define fclose(f)rb_w32_fclose(f)
使fclose重定向到了rb_w32_fclose
表现状况:
动态链接编译正常, 一旦使用fclose(C++ fsteam里面close也会调用),程序异常
静态链接提示fclose与默认库冲突
原因探究:
不知道为什么一句宏定义会生成一条函数,还能被导出,看来对C/C++了解还是太少了。那句宏有个条件,就是
#ifdef RUBY_EXPORT
这个在Ruby\Win32\下有个makefile.sub文件,250行左右(请搜索)有行
-DRUBY_EXPORT
就是cl的宏定义, 定义RUBY_EXPORT,但是去掉之后本机编译失败。
在网上搜索了一个,国外也有这样的问题(但是只有几例):
0.Ruby为什么会常试定义fclose这个东西
1.定义也就算了,还不对称: fopen没有定义 _wfopen没有定义
但是使用官方提供的文件(windows版只给到1.9X),没有fclose问题,看来是编译的方式不对,在正确方法解决前只能常试下面的妥协方案,
有人知道正确的方法请联系一下笔者,感谢
妥协方案:
在win32.h(ruby\include\ruby下)
#define fclose(f)rb_w32_fclose(f)
换成
#define fclose(f)fclose(f)
这样就不会导出fclose函数了。不过修改了文件,请注意Ruby的License
0 0
- CRuby作为嵌入式脚本语言fclose()错误的妥协方案
- verilog 中最后用$fclose()的错误
- 作为脚本语言的Python(Python Preview)
- php3:跨平台的服务器端嵌入式脚本语言
- 适合嵌入式的脚本语言——Lua
- c语言,fclose()带来的内存错误(求解)
- 萨科齐的“妥协”
- 妥协的战争
- 为什么俺推荐Python[1]:作为脚本语言的Python
- 妥协
- 妥协
- 嵌入式脚本语言LUA
- 基于Lua脚本语言的嵌入式UART通信的实现
- fclose的教训
- PHP是一种没有前途的嵌入式脚本语言?
- 用 PHP 作为 Shell 脚本语言
- fclose
- fclose
- android ART虚拟机
- Java常用开源类库
- 第七周项目2-体重检测系统
- 【Hibernate】最简单的Hibernate工程——账号注册系统
- Dictionary这个对象在ASP还是很useful
- CRuby作为嵌入式脚本语言fclose()错误的妥协方案
- leetcode-Combination Sum II
- C/C++浮点数在内存中的存储方式
- ACM大连分会成立报告会回忆笔记
- Oracle事务
- Myeclipse6.5注册
- 【转】哈希表如何解决冲突
- leetcode-Jump Game II
- python 笔记