問題タブ [heat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
11643 参照

com - tlbファイル以外のフォルダにdllをインストールすると、COM登録に失敗します:「自動化エラー:指定されたファイルが見つかりません」

Accessアプリケーション(MyAppと呼びます)が使用できるように、VB.NETで開発されたCOMコンポーネント(MyLibと呼びます)があります。そのためには、生成されたMyLib.dllファイルとMyLib.tlbファイルを使用してCOM登録を行う必要があります。両方のファイルをMyAppのフォルダーにインストールすると、すべてが正常に機能し、COM関数が正しく呼び出されます。ただし、dllを共通フォルダーにインストールすると、タイトルにエラーが表示されます。これを行う理由は、同じマシンに異なるバージョンのMyAppをインストールできるようにするためです。したがって、COMコンポーネントが変更されない場合は、もちろん、これらの異なるバージョン間でCOMコンポーネントを共有し、Windowsに参照カウントを実行させたいと考えています。

MyAppのインストールフォルダまたはMyLib.dllと同じ共通フォルダのどちらにMyLib.tlbファイルを配置する必要があるかわかりません。しかし、とにかく、私は両方の場所を試しました、そしてそれらはすべて同じエラーを出しました。MyLib。*をMyAppのフォルダーに入れた場合と、MyLib.dllを共通フォルダーに入れた場合のレジストリファイルを比較してみました。もちろん、HKCR \ Wow6432nodes \ CLSID {MYCLSID} \ InprocServer32で登録しようとしているクラスのCodeBaseを除いて、違いはわかりません。私が理解していないもう1つのことは、どちらの場合もHKCR \ Wow6432nodes \CLSID{MYCLSID}の下にTypeLibという名前のサブキーがないことです。

AccessアプリケーションでCOMリファレンスがどのように機能するか正確にはわかりません。間違っている場合は、訂正してください。誰かが私が間違ったことを教えてもらえますか?共有COMdllを登録する正しい方法は何ですか(dllとtlbの両方を共有フォルダーに入れるかどうかに関係なく)?ありがとう!

アップデート:

COM登録に関しては、WIXを使用してWindowsインストーラーを作成し、heat.exeを使用してdllファイルとtlbファイルから情報を収集しています。生成されたファイルには、Class、ProgID、TypeLib、およびRegistryタグの情報が含まれています。前述したように、WIX構成の観点から見ると、2つのケースの唯一の違いは、MyLib.dllファイルを配置する場所です(MyLib.tlbファイルをMyAppインストールフォルダーに配置するのが正しい方法だと思います。もう一度、修正してください。私が間違っている場合)、dllファイルとtlbファイルの両方をアプリケーションのインストールフォルダーに入れると、機能します。登録後のレジストリ構造は次のとおりです

まず、HKCR \ CLSID \ {MYCLSIDs}があり、それぞれが私のCOMクラスの1つを表しています。「InprocServer32」という名前のサブキーには、Assembly、Class、CodeBase、RuntimeVersion、threadingModelがあります。また、CodeBaseは、共通のファイルフォルダー(機能していない)またはMyAppのインストールフォルダー(機能している)のいずれかです。これは、dllを配置するさまざまな場所です。AccessはTypeLibのみを認識し、TypeLibから実際のdllへのリンクがあるはずなので、{MYCLSIDs}の下に別のサブキーTypeLibがあると思いましたが、どちらの場合もこのサブキーはありませんが、 2番目のケースはまだ機能しています。問題はありますか?

次に、HKLM \ Software \ Classes \ CLSID \ {MYCLSIDs}があります。このキーは、上記と同じ構造です。

第三に、HKCR \ {MYPROGIDs}、これらは私のクラスの単なるProgIDです

第4に、HKCR \ Typelib \ {LibID}には、tlbファイルからの情報が含まれています。このIDは、COMコンポーネントプロジェクトのアセンブリGUIDからのものです。

最後に、HKEY_CLASSES_ROOT \ Interface \ {InterfaceID}には、値{00020424-0000-0000-C000-000000000046}のProxyStubClsid32という名前のサブキーがあり、TypeLibという名前のサブキーと値は私のLibIDです。

唯一の違いは最初の項目のCodeBaseであるようです(私は間違っている可能性がありますが、それが私が見ているものです)。問題が発生した場合はお知らせください。ありがとう!

2回目の更新:

MyLib.dllを共有フォルダーにインストールした後、COM呼び出しが失敗します。しかし、SHARED_FOLDER\MyLib.dllのすべてのCodeBase値をINSTALLDIR\MyLib.dllに置き換え、MyLib.dllをINSTALLDIRにコピーすると、実際に機能します。逆に、MyLib.dllをINSTALLDIRにインストールした後(この場合はCOMが機能しています)、CodeBaseの値をINSTALLDIR\MyLib.dllからSHARED_FOLDER\MyLib.dllに変更し、SHARED_FOLDERにコピーします。今回は失敗します。ですから、それはまさに設置場所の問題であるように思われます。これは、私のCOMの理解とは正反対です。また、SHARED_FOLDERはインストーラーが作成するフォルダーにあるため、アクセス許可の問題はないと思います(間違っている可能性があります)。

0 投票する
1 に答える
19115 参照

map - gnuplotヒートマップの色の範囲

ファイルにいくつかのXYZデータがあり、gnuplotを使用して表示しています。ヒートマップを作成しています。Z値が色を使用して表示される2Dプロット。現在、次のスクリプトを使用しています。

私の問題は、gnuplotがパレット定義の0と1を無視することです。指定された色を使用しますが、ファイル内の最小および最大のZ値に従って再スケーリングします。これにより、z範囲が異なるさまざまなプロットを視覚的に比較することが困難になります。

zカラー範囲の再スケーリングを停止するようにgnuplotに指示するにはどうすればよいですか?

0 投票する
2 に答える
1475 参照

visual-studio-2010 - heat プロジェクトは Visual Studio 2010 で -var param をサポートしませんか?

コマンドの使用に問題があります

出力ファイルはこのパラメータ-var "var.SourceDir"を無視し、 var.My.project.ProjectDirを使用しています

Visual Studio 2010 は次のエラーを返します。

未定義のプリプロセッサ変数 '$(var.My.project.ProjectDir)'。
C:\My.project\My.project.Installer\FilesFragment.wxs

検索しましたが、パラメーターdirでheatが使用されている例しか見つかりませんでした。

パラメータ-varが heat プロジェクトでサポートされていないことを示すドキュメントは見つかりませんでした。

解決策はありますか?

0 投票する
1 に答える
2119 参照

wix - heat.exeを利用して、すでにローカライズされているファイル名を収集し、wixを使用してそれらをmsiに含めます

私がやろうとしていることが実行可能かどうか、そして答えが「はい」の場合、それをどのように実行するかについて質問があります。

私はwixを初めて使用し、インストーラーにフォルダーを動的に含める方法について読んでいます。最終的には、heat.exeを使用してwxsファイルを生成し、後で新しく生成されたwxsファイルを追加するタスクをnantで実行できました。ライトとキャンドルのタスク。これにより、フォルダーのコンテンツをmsiに追加し、その後、そのフォルダーとそのコンテンツをインストールすることができました。

私の問題は、msiに追加しているフォルダーに、名前が既にローカライズされているファイルが含まれているところから始まります(これは要件です)。

たとえばロシア語で名前が付いているファイルをディレクトリ構造に追加しているときに、1252コードページではない場合、次のエラーが発生します。

[exec] ...... Templates.wxs(65):エラーLGHT0311:指定されたデータベースコードページ「1252」で使用できない文字が文字列に指定されました。これらの文字をデータベースのコードページに存在する文字に変更するか、次の属性のいずれかを変更してデータベースのコードページを更新します:Product / @ Codepage、Module / @ Codepage、Patch / @ Codepage、PatchCreation / @ Codepage、またはWixLocalization /@Codepage。

(UTF-8)に設定しようとしましProduct/@Codepage65001が、問題は解決しませんでした。

最終的に私がやりたいのは、フォルダーとそのコンテンツをインストーラーに追加し、他の誰かがそのフォルダーに名前がローカライズされた任意の数のファイルを追加できるようにすることです。このように、ビルドが実行され、その後msiが作成されるたびに、msiにはそのフォルダーとそのコンテンツが含まれます。

事前にどうもありがとうございました。

0 投票する
1 に答える
234 参照

iphone - html5 と熱センサー

私は html5 プログラミングが初めてで、iphone 用の html5 アプリを構築することを考えていました。APIで触れたときに温度を感知することについて、APIに情報があるかどうか疑問に思っていましたか? 私のアプリは、画面に触れたときの指の温度に依存します。これを測定する方法はありますか?そうでない場合、画面に加えられた圧力の量を測定する方法はありますか?

ありがとう!

0 投票する
1 に答える
705 参照

c - SIMD を使用した 1D 熱方程式の最適化

私はCFDコードを使用しています(計算流体力学用)。私は最近、ループの 1 つでインテル® コンパイラーが SSE を使用しているのを見る機会があり、このループの計算パフォーマンスがほぼ 2 倍になりました。ただし、SSE および SIMD 命令の使用は、運がよかったようです。ほとんどの場合、コンパイラは何もしません。

AVX命令が近い将来この側面を強化することを考慮して、私はSSEの使用を強制しようとしています.

簡単な一次元伝熱コードを作りました。これは、もう一方の結果を使用する 2 つのフェーズで構成されます (U0 -> U1、U1 -> U0、U0 -> U1 など)。反復すると、安定した解に収束します。メイン コードのループのほとんどは、同じ種類の計算を使用しています。(有限差分)。

ただし、私のコードは通常のループよりも 2 倍遅くなります。結果は同じなので、計算は一貫しています。

私は間違いを犯しましたか?スーパー コンピューター (Westmer を使用) でテストする前に、Core 2 を使用してループをテストしています。

SSEループと参照ループを含むコードは次のとおりです。

++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++

編集 :

++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++

あなたの答えを考慮して、これについて議論するのに適切な場所を見つけたので、トピックを拡大して私の目的を説明します. 受け入れていただければ、すべてのループについて順を追って説明します。これは長くなる可能性がありますが、私のドメイン内の多くの人や、OpenFoam などのオープンソース ソルバーにとって非常に役立つ可能性があります。エネルギー消費への影響を考慮していません (私たちは皆、大規模なスーパーカルキュレーターを使用しています)。

私が使用している CFD コードは、512 の Westmer コアで実行するのに 1 か月以上かかります。MPI (Message Passing Interface) を使用して proc 間の通信を行っています。物理フィールドはメッシュと見なすことができるため、シミュレーションのタイプに応じて、1D、2D、または 3D 配列になります。しかし、3D はあなたが想像できる最高のものです。

完全なコードは Fortran 95 であり、実際には単純化された C です。C とのインターフェイスは簡単で、C ルーチンは Fortran から直接呼び出すことができます。型は同じです (int、double、long など)。しかし、Fortran はそのような最適化を許可していません。単純になるように設計されています。そのため、C 命令を調査しています。

すべての CFD コードで、3 種類のループと MPI メモリ分散という同じ問題に直面しています。最初にループについて説明しましょう:

  • 空間微分 (有限差分と呼ばれる) : ループは、すべてのケースの 1D 畳み込みで構成されます(1D、2D、3D、一度に 1 つの軸でのみ微分します) (DF = F[i-1]*A + F[i ]*B + F[i+1]*C)。ただし、1D 以上を使用する場合、メモリアクセスは次のようになります。

    最初のループでは、メモリ アクセスが継続されません (Fortran での反転、メモリが反転されます)。これが最初の問題です。3D 配列を使用する場合は同上。

  • ポアソン方程式の解決、つまり行列の乗算: ループは、シミュレーションに応じて、1D、2D、または 3D の畳み込みで構成されます。これは実際には 2 次導関数 (DDF = D(DF)) です。

    このループは、最初に示したループと同じですが、偶数でも奇数でもなく、直接計算されます。

  • 加重ガウス ザイデル解像度、つまり以下と同じループですが、依存関係があります。

    これは、以前に調査したループです。

次に、別の問題に直面します。メモリの分散です。各コアには独自のメモリがあり、他のコアと共有する必要があります。単純化された最後のループを考えてみましょう:

n1=512 としますが、RAM 容量が少ないためローカルメモリに格納できません。メモリは、同じコンピューターではなくネットワーク上にある core0 (1->255) と core1 (256-512) に分散されます。この場合、i=256 の導関数は点 i=255 を認識する必要がありますが、この値は他のプロシージャにあります。他のプロセッサの値を含むメモリは、GHOST メモリと呼ばれます。したがって、ループは次のとおりです。

これに対処する必要があります。Mysticial、あなたは今私がどこに向かっているのかわかります: ループインターレースはこれを考慮に入れる必要があります. これは次のようにできると思います:

どこかでインデックスを間違えていないことを願っています。ここでは、最も単純な最初のタイプのループを考えてみましょう。その後、同様のループ 2 と 3 を実行できます。目的はこれを行うことです(これは画像処理に似ています):

私はそれに取り組んでおり、あなたの推奨事項を考慮して、数時間以内に結果コードを投稿します.

0 投票する
1 に答える
1071 参照

wix - Heat.exeによって生成されたWixレジストリファイルにはローカルファイルパスがあります

私は熱でうまく収穫しているディレクトリを持っています。

ファイルの1つは、COM相互運用機能の登録が必要なdllです。

Heatは必要な.regファイルを正しく生成していますが、CodeBaseこのファイル内の値はビルドサーバーの相対パスに設定されています。

これは、ユーザーマシンへのインストール時に、パスが正しくないため、ファイルが登録されないことを意味します。

私はこのregファイルをヒートで再実行して、何かができるかどうかを確認しようとしましたが、それは役に立ちませんでした。相対パスはまだ残っています。

インストール時に機能するファイルパスを使用してregファイルを生成する方法はありますか?

0 投票する
1 に答える
317 参照

com - Heatで再利用可能なCOM登録コンポーネントを生成するにはどうすればよいですか?

WIXツールセットのheatutilを使用して、dllのCOM登録を生成します。そのdllを使用している製品が1つだけになるまで、すべて正常に動作します。

しかし、このdllがすでに別の製品によって登録されているか、後でインストールされる製品によって使用されている場合、私の製品をアンインストールするとDLL登録が削除され、他のアプリケーションが破損します。

この問題を克服する方法はありますか?生成されたコンポーネントを永続的にするという考えはありますが、それを実現する簡単な方法はないようです。また、アプリケーションがそのdllを使用するopnyである場合は、DLL登録を削除する方がよいため、理想的な状況ではありません。

もう1つの問題は、dllを登録すると、新しいバージョンであっても以前の登録が変更されることです。繰り返しますが、他のアプリケーションを壊します。すでにインストールされている場合は、neverバージョンを使用したいと思います。

説明されている問題を克服するための簡単な解決策を誰かが推奨できますか?

0 投票する
1 に答える
1284 参照

installation - 1 つの OCX が正常に登録されていない WIX インストールをデバッグするにはどうすればよいですか?

2 つの OCX ファイルを Program Files (x86) フォルダーに配置し、両方の OCX ファイルを登録する MSI を作成しようとしています。

2 つの OCX ファイルの最初のファイル (実行時に 2 番目の OCX を実際に使用するファイル) が正常に登録されます。2 番目の OCX が正常に登録されていません。これは、登録に失敗した OCX で regsvr32 を実行すると、それが使用されているアプリケーションで機能するためです。

2 つの OCX ファイルの登録情報は、ハーベスト ツール (heat.exe) で生成されました。両方の OCX でヒート ツールを使用したため、OCX 登録が両方ではなく一方だけで機能する理由がわかりません。

これをデバッグするにはどうすればよいですか?

0 投票する
1 に答える
1283 参照

xml - 熱から .wxs を変更するための XSLT の使用

xslt を使用して、wix で生成された .wxs ファイルを編集heatしたい

これは components_en_us.wxs です

しかし問題は、他の .wxs ファイル (他の言語の場合は components_xx_yy.wxs) があり、コンポーネント/ファイル ID が同じであることです。このメソッドを使用してコンパイルすると、エラーが発生します

グーグルで調べたところ、xslt を使用して components_en_us.wxs のコンポーネント/ファイル ID を変更できることがわかりました。

だから、私は次のようなものを期待しています

現在、別の質問からこの xslt がありますが、希望どおりに実装する方法がわかりません。

ですから、私の理解が間違っている場合は修正してください.xsltについても助けてください

前もって感謝します

編集:この方法はベストプラクティスですか、またはこの重複エラーを解決するために何か他のことをする必要があります.