FC2ブログ

tcc 学習:libtcc 利用法

2018-05-04 :  PCクリニック
libtcc 利用法の前に、

前回(2018-05-02)の記事「Tiny C compiler:64-bit 版」で原因が分からなかった、
64ビットモードコンパイルの件

原因が判明した。


環境変数pathのみに気を取られていた。
つまり、システム環境変数しか頭になかった。

実は、もう一つの方のkami のユーザー環境変数もあった。

現在のメインPCの初期設定時で、
「C_INCLUDE_PATH」「CPLUS_INCLUDE_PATH」「LIBRARY_PATH」
の3つの変数を定義していた。
これらは、“MinGW”用だった。


従って、今となっては、この3つを削除した。

これで、“tcc.exe”への Path を追加定義するだけで、
( 64ビットコンパイラを使っているので )
キチンと、64ビットモードの「.exe」や「.dll」が作られた。



さて、本題のlibtcc 利用

昨年(2017-05-24)の記事「Python & tcc 学習:libtcc 直接使用」で書いたコード:
# -*- coding: utf-8 -*-
# ---------- use_libtcc.py -----
import ctypes as ct
tcc = ct.CDLL( 'libtcc' )

ST=''' int Add( int x, int y ){
return x + y;
}
'''
relocate_auto = ct.c_void_p(1)

TCL = tcc.tcc_new();
z = tcc.tcc_set_output_type( TCL, 0 );

z = tcc.tcc_compile_string( TCL, ST );
tcc.tcc_relocate( TCL, relocate_auto )

Add_proto = ct.CFUNCTYPE( ct.c_int, ct.c_int, ct.c_int )
Add = Add_proto( tcc.tcc_get_symbol( TCL, 'Add' ) )
# ------------------

z = Add( 2, 5 )
print( z )

# ------------------
tcc.tcc_delete(TCL)
_=raw_input()
でOK?


ダメ???

“libtcc”フォルダにある、「libtcc.h」を見ると、
/*    ・・・・・
・・・・・ */
/* set output type. MUST BE CALLED before any compilation */
LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type);
#define TCC_OUTPUT_MEMORY 1 /* output will be run in memory (default) */
#define TCC_OUTPUT_EXE 2 /* executable file */
#define TCC_OUTPUT_DLL 3 /* dynamic library */
#define TCC_OUTPUT_OBJ 4 /* object file */
#define TCC_OUTPUT_PREPROCESS 5 /* only preprocess (used internally) */
/* ・・・・・
・・・・・ */
となっていた。

と云うことは、
上記コードの赤文字の行は、
z = tcc.tcc_set_output_type( TCL, 1 );
とすべきですネ。


これで、
64ビットモードでも、libtccが使える。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180329
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2018/08 | 09
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク