0

1)以下のtclサンプルコードのdllファイルを作成したいのですが、これを行う際に多くの問題に直面しています。私はLinux(ubuntu 10.04)マシンで作業しています。ファイルの名前はclock.tclです。私は多くのウェブサイトを見てきましたが、従うべき正確なプロセスを得ることができませんでした。

2)Linuxでtclコードのdllファイルを作成するための正確なコマンドにも苦労しています

私はtclに不慣れで、dllも作成しています。誰かがこの問題を解決するのを手伝ってくれますか?すぐに助けてください。

clock.tcl

#!/usr/bin/env tclsh8.5

package require Tk

namespace eval ::sd {
set time0 0
set value 0
set h_outfile "i"
}

proc every {ms body} {eval $body; after $ms [info level 0]}


proc time_ms { } {

set m [clock milliseconds]
puts " in time_ms time is $m"
set m  [format %2.2d:%2.2d:%2.2d.%2.2d \
[expr {$m/3600000}] [expr {$m/60000}] [expr {($m/1000)%60}] [expr {$m%1000}]]

incr ::sd::value
set ::sd::time0 $m
puts $::sd::h_outfile " \t $::sd::time0 \t $::sd::value \n"
}

proc open_log { } {
set ::sd::h_outfile [open "output.txt" "w"]
puts " file is $::sd::h_outfile"
puts $::sd::h_outfile " \t hr::mm::ss::ms \t temperature in celcius \n"
}


if {$argc < 1} {

open_log
every 100 {
time_ms
}
}
4

2 に答える 2

0

Windows 用の Tcl DLL のビルドを参照してください。

于 2012-09-11T09:40:38.707 に答える
0

Tcl コードを共有ライブラリに組み込むことはめったにありません (正式には、DLL は Windows 上の単なる共有ライブラリ形式です。他のプラットフォームには概念的に同等のものがありますが、名前が異なります) が、それは可能です。それを行う方法は、おそらく最も簡単ですが、他にもあるかもしれませんが、StarDLLを構築することです。これは、共有ライブラリ内の Tcl/Tk ランタイムと、Tcl コードを保持する小さな仮想ファイル システムで構成されます。Pat Thoyts のページに StarDLL の構築に関する詳細な説明がありますが、それでも初心者が行うものではないようです。

これが本当に必要なものかどうか疑問に思います。他の場所から外部プロセスとして呼び出すプログラムを作成する方がはるかに簡単で、StarPackとしてパッケージ化するためのツールはかなり成熟しています。

于 2012-09-12T19:51:45.833 に答える