• ベストアンサー

言語仕様の特定

こんばんわ。 いつもお世話になっております。 現在請け負っている仕事で困ったことがございましたこちらにご相談させていただきました。 今回の仕事内容は「現在稼働中の既存のDLLを再作成する。」という内容です。 詳細としてはWindows2000Server動作している既存のDLLがあるのですが、機能改訂を行うこととなりました。 ところが元のDLLのソース一式が存在しないため、代替案として一から再度作成するという流れになりました。 DLLの名称やメソッド名、処理内容等はドキュメントがあるのですが、環境まわりのドキュメントが一切なく どのような言語でどのような形式でDLLを作成すればよいのかがわからない状況です。 ただ、呼び出し元アプリの設計書を参照すると以下のような記述が存在しました。 ・エントリーポイントを「_stdcall」または「FAR PASCAL」として宣言する ・MFCで作成されたDLLは利用できない ・呼び出し元はマルチスレッド環境からDLLを呼び出すのでスレッドセーフに作成すること。 恐らくC++あたりの言語だろうという想定はつくのですが、具体的にどういう環境でどういう形式で アプリケーションを作成すればいいのかがわかりません。 上記の情報で開発環境やそれにまつわる情報が解読できる方いらっしゃいましたらご助言頂けません でしょうか? 情報が不足しているのは重々承知していますので予測や一般論でも結構です。 無謀なお願いとは思いますが、何卒宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

Visual C++ 2008 Express Edition(無料) http://www.microsoft.com/japan/msdn/vstudio/express/beginners/2008/visualc.aspx で要件を満たすと思います。 試しに接続用のDLLを作ってみて確認してみると良いと思います。 確かVisual C++ 2008 Express Editionでも外部依存しない(MFCにも.Net Frameworkにも依存しない) ファイルを作成できたと思います。 DLLがスレッドセーフになるかどうかはコーディングの問題です。 そのようにコーディングすれば問題ありません。 ただ質問者さんはVisual C++を使った経験はないようですので、 最初に覚える事は多いと思います。 (スレッドセーフにする為に必要なAPIの使い方等も覚える必要があります。) 最初のヒントとしてdllのエントリポイント(コンソールプログラムのmain関数)は 「DllMain」という名前ですのでそれでgoo等で検索するとdllの作り方 はわかると思います。

kbiz
質問者

お礼

ご回答ありがとうございます。 VC++でMFCを使用しないDLLを作成するということですね。 MFCにも.Netにも依存しないDLLという意味がやっとわかりました。 スレッドセーフとエントリーポイントはコーディングしながら一つ一つかたづけていきたいと思います。 一点追加で質問があるのですが、本番機のサーバはWindows2000Serverなのですが、その場合にVC++のバージョンというのはどこまで意識すべきなのでしょうか? (VC++2008でも作成可能という認識でいいのでしょうか?) ご回答いただけるようでしたらお願い致します。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

>VC++2008でも作成可能という認識でいいのでしょうか?) 恐らくVC++2008でも問題無いとは思いますが その環境で私に経験があるわけではないので断定はできません。 それについては実際やってみた方が早いと思います。 ただServer2003以降に使えるようになったAPI等 を使わないように注意することは必要です。 (MSDNのヘルプをみればそのAPIがどのバージョンから対応しているかが 明記されています。) 今調べてみたらまだVC++ 2005 Express Editionもダウンロードできるみたいでした。 http://www.microsoft.com/japan/msdn/vstudio/express/past/2005/ 念の為を考えて、こちらでも良いかもしれません。

kbiz
質問者

お礼

sha-girl様 お世話になっております。 いろいろご親切にありがとうございました。 まずはVC++2005をベースにとりあえず組み始めることから スタートしたいと思います。 やってみないと始まらないですしね。 このたびは大変丁寧にご指導いただきましたまことにありがとうございました。

すると、全ての回答が全文表示されます。
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.1

新規に作り直すのであれば、DLLを呼び出す側の言語および 呼出し方法に合わせられる言語を選択するしか無いのでは? #既存のDLLを作成したのと同じバージョンの言語が既に #販売終了していて、入手できない事も考えられます。

kbiz
質問者

お礼

ご回答ありがとうございます。 ご指摘のとおりです。 その呼び出し方法に合わせられる言語が情報が不足しておりまして、現状入手できる条件からたどっていこうと考えた次第です。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A