[xyzzy:01988] Re: DLL 定義ファイルの作成について
- Subject: [xyzzy:01988] Re: DLL 定義ファイルの作成について
- From: Masahito Henmi <henmi@xxxxxxxxxxxxx>
- X-mailer: Denshin 8 Go V321.2b5
大橋 さん、こんにちは。逸見 です。
≫以前、「関数名の修飾について質問」で、名前解決についていろいろ教えていただき
≫ながら、またこんな質問をするのは気がひけるのですが。
≫
≫個人的なDLL定義ファイルみたいなものを作っておいて、他の関数から呼び出して使
≫えるようしたいと考えております。
≫
≫例えば、次のような内容の2つのファイルがあるとします。
≫
≫-- a.l の内容 --
≫(eval-when (:compile-toplevel :load-toplevel :execute)
≫ (require "foreign"))
≫;;; <== (あ)
≫(foreign:*define-dll-entry :int16 a-func (:int32) "aaa.dll")
≫--- 以上 --------
≫
≫-- b.l の内容 --
≫;;; <== (い)
≫(define my-func ()
≫ (msgbox (format nil "~d" (a-func 10)))
≫--- 以上 --------
≫
≫このまま b.l を load-fileして my-func を実行しようとしても、シンボル名の解決
≫ができないというのはわかるのですが、では(あ)・(い)の場所に何を入れればよいの
≫か、頭がこんがらがってわかりません。
≫
a.lをC言語でいう共通ヘッダーみたいなのにして、b.l(自作プログラム)
で使うときに #includeみたいにするという意味でしたら、
(あ)には、特に何も書く必要はなくって、(い)にloadなりload-libraryなり
autoloadなりrequireを書けばいいんでなくって?
load インタープリタでloadする
load-library *.lcがあればそれをロードする。(なければ*.lをロード)
autoload 関数1つ単位で、呼ばれたときloadするようにする。
(呼ばれるまで、loadされないって事)
require あるライブラリをロードする。
windowsのapiがロードされているモジュール"winapi"を
ロードする。
*modules* この変数を見ると、今どのモジュールがロード済かわかる。
既にロード済だと、もうロードされない。
requireをつかうときには、(あ)にprovideを書いとけばOK.
--> *module*に登録されます。
------------------------------------------------------------
逸見雅人 Email henmi@xxxxxxxxxxxxx
Right now my favorites of favorites:
あなたの一番になりたい
この世で一番大切なもの