tcc 学習:既存 DLL を呼び出す DLL の作成

2017-05-08 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-05-06)の記事「tcc 学習:lua52.dll 利用その他」に続いて、
dll の利用に関して学習。

今回は、既存 DLL を呼び出す DLL の作成に関して学習。

先日(2017-05-05)の記事「tcc 学習:同梱例題その他」で書いた、
既存の“test_dll.dll”から始める。

(1)“tiny_impdef test_dll.dll”コマンドで
  「test_dll.def」を作る

(2)「test_dll.dll」を使う「use_k_dll.c」を作る:
// ----- use_k_dll.c -----
#include <windows.h>
#define DLLExport __declspec ( dllexport )

int Add( int x, int y ); // これは、'test_dll.dll' 内の関数

DLLExport int add2( int x, int y ){
int z = Add( x, y );

char buf[256];
sprintf( buf, "%d", z );
printf( buf );

return 2*z;
}

(3)“tcc -shared use_k_dll.c test_dll.def”コマンドで、
  「use_k_dll.dll」を作る
  「use_k_dll.def」も出来る

(4)「use_k_dll.dll」を使う「Main_use_k_dll.c」を作る:
// ----- Main_use_k_dll.c -----
int add2( int x, int y ); // これは、'use_k_dll.dll' 内の関数

int main(){
int z = add2( 2, 5 );

char buf[256];
sprintf( buf, "%d", z );
printf( buf );

return 0;
}

(5)“tcc Main_use_k_dll.c use_k_dll.def”コマンドで、
  「Main_use_k_dlls.exe」を作る

※※「Main_use_k_dll.exe」の実行には、2つの dll が必要。


更に、
メインプログラムを GSL Shellで作ってみる:
----- Main_use_k_dll.gsl -----
libK = ffi.load('use_k_dll') -- dll 読み込み
---------- 中で、test_dll.dll の Add を呼んでいる

ffi.cdef[[
int add2( int x, int y ); // use_k_dll 内の関数宣言
]]

----------------------------------------------

print( libK.add2( 2, 5 ) ) --- 出来る
の様に、
これまで通りに作れる。


本日はここまで。


tcc ( Tiny C Compiler ) 学習は続く。


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


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

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 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 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク