Libファイル内のString table – プログラミング – Home

Libファイル内のString tab...
 
通知
すべてクリア

[解決済] Libファイル内のString table


まろ
 まろ
(@まろ)
ゲスト
結合: 15年前
投稿: 9
Topic starter  

Libファイルで構成されるプロジェクトに
String Tableを作成しました。

その後、ダイアログベースでLibファイルプロジェクトの
クラスをインスタンス化し、
CString::LoadStringでString Table内の
文字列を取得したところNULLが返ってきます。

上記の条件の場合、リソースから取得できない要因など
あるのでしょうか?


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

lib っつーことは「スタティックライブラリ」のプロジェクトを作って、
スタティックライブラリのソースコードにリソースを含めたら、
そのスタティックライブラリを利用するアプリケーション側でリソースが取れない
という認識であっているのかな(要確認)

もしそうなら、これはできないのが仕様

スタティックライブラリは、その中に含まれる関数等のうち、
アプリケーションプログラムのリンク時に使用されているもののみピックアップして
取り込まれるというのが仕様。なので
スタティックライブラリ中のリソースはアプリケーションには含まれない。


返信引用
まろ
 まろ
(@まろ)
ゲスト
結合: 15年前
投稿: 9
Topic starter  

えーそうなんですか。
では、もしString Tableを用いるなら、
メインプロジェクト(今回ならダイアログクラス)
のリソースから参照する形がベターなのでしょうか?

ライブラリ側で複数言語対応された
スタティックな文字列テーブルを持ちたかったのですが、
出来ないとなるとソース又はファイルで持つほかないって事ですか・・・


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

この辺、アプローチとして2種類考えることができ、

・同一EXE内部に複数の言語リソースを含ませる
・EXE内部には言語リソースを一切含まないようにし、リソースは DLL に分離する

前者 (EXE 1つ) であれば
・日本語OS上であれば日本語画面が表示される
・日本語OS以外であれば英語画面が表示される (独仏中OSでも英語表示)
という形の2言語の形にとどめておくのが安全 (Neutral 言語 + Localized 言語1つ)
アプリケーションプロジェクト上で「リソースの挿入」で別言語リソースを挿入でok
(下記提示ページの補遺の手順)

真に多言語したいのであれば、後者手順 (DLL 分離) が必要となり、参考
http://hp.vector.co.jp/authors/VA000092/win32/multi-lang-mfc.html

> ライブラリ側で複数言語対応された
要するにスタティックではなくダイナミック、つまり lib ではなく dll なら可能。

ただ、単複変化や語順違い、表示すべき文字列の長さの違い、などなどから
そうあっさりと簡単にはいかない場合が多いですだよ(経験済み)


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

> ライブラリ側で複数言語対応された
> スタティックな文字列テーブルを持ちたかったのですが、

こう言う事がしたい時はダイナミックリンクライブラリにすると思いますけれど、
まろさんが言っているLibファイルは、スタティックリンクライブラリと
ダイナミックリンクライブラリのどっちなんでしょう。
通常、スタティックリンクライブラリの場合は完全に実行ファイルに
組み込まれる形になるのでこれにリソースを入れることはしないと思います。
この場合はリソースは実行ファイルのプロジェクトに入れるのが普通では?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

うわっ、tetrapodさんとかぶってた。(^^;


返信引用
まろ
 まろ
(@まろ)
ゲスト
結合: 15年前
投稿: 9
Topic starter  

お返事ありがとうございます。

プロジェクト構成上、
実行ファイルに組み込まれる形を望んでます。

そのためスタティックリンクライブラリで
作成しています。

しかし、ライブラリ(スタティック・ダイナミック共に)内の
情報としてString Tableを持たせれないかと考えてたのです。
(つまり、共通の機能内で用いる文字列)

また、リソースをDLL に分離させるプロジェクト方法は、
スタンダードな作成方法なのでしょうか?


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

> また、リソースをDLL に分離させるプロジェクト方法は、
> スタンダードな作成方法なのでしょうか?
一般的な方法です。
リソースのみのDLLはサテライトDLLとよばれ、国際化対応アプリケーションではよく使
用されます。
http://msdn.microsoft.com/ja-jp/library/24b2tcy0.aspx


返信引用
まろ
 まろ
(@まろ)
ゲスト
結合: 15年前
投稿: 9
Topic starter  

そうですか↑
非常に勉強になりました。
有難うございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました