- 締切済み
複数のCのみファイルをリンクし一本の実行ファイルまたはDLLを作成する方法
いつもお世話になっています。 現在、それぞれCのみで作成したファイルをリンクし、ひとつのDLLファイルまたはEXEファイルを作成したいのです。 作成方法はWin98,MS-VisualStudio6.0です。 今まで調べたやりかたでWin32Dynamic・・・ で「シンボルをエクスポートする」で行った場合、 DLLmainが「CPP」になってしまいました。 DLLmainをCで作成したい場合は、やはり空の「シンボルを作成する」にしなければいけないのでしょうか? 網羅する場合はプロトタイプ宣言を外部ヘッダファイルに記述するのでしょうか? そのサンプルと言うか、詳しく掲載しているサイトがあったら教えてください。 初心者なので、MSDNの説明だと理解に苦しみます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ykkw_2001
- ベストアンサー率26% (267/1014)
>初心者 とは、WindowsのMS-VisualStudio6.0が初めてであって、ほかのOSやC言語の開発環境は、「知っている」という感じですね。 で、すでにあるCソース(複数ファイル)をリンクして、Winで動作させたい。 と見ました。 (違ったらゴメン) DOSやUNIXのような、CUIの開発環境でmakefileを使っていた人には、あのような統合環境は「いったい何を勝手にやってくれているのか?」がわからなくて、「ちゃんとした説明があれば、自分でできるのに」と、とっつきにくいです。 私は、以前上記のようなことをやりましたので、その方法を・・・ まず、拡張子CPPのファイルの中にC言語ソースプログラムを書いても何ら問題ありませんので、認識してください。 >空の「シンボルを作成する」にしなければいけないのでしょうか? しなくてもいいですが、サンプルコードが作成されますので、参考にしやすいです。 「シンボルをエクスポートする」で、プロジェクトを作成、既存のCファイルを拡張子Cppにして、ワークスペースのファイルビュー(ファイルがツリー状態で表示されている)のソースファイルのところで右クリック、cppファイルを追加してゆきます。 エクスポートするための定義が(xxx.h)の中に(XXX_APIのような形で)defineされてありますので、外部から利用したいシンボルの前につけます。 xxx.cpp のサンプルどおりにすればよい。 特にDLLの初期化や終了時のコードがなければ、xxx.cppは、ほうっておく。 このファイルにプログラムを書いてもいいが、既存のファイルであれば、その必要はないですね。 >網羅する場合はプロトタイプ宣言を外部ヘッダファイルに記述するのでしょうか? 全部のシンボルを外部利用可能にするなら、全部につけます。プロトタイプ宣言は、その関数が使われる前であれば、外部ヘッダファイルでなくてもよい。(MSCと同じです)。まぁ、外部ヘッダファイルのほうが、管理しやすいと思いますが・・・ >そのサンプルと言うか、詳しく掲載しているサイトがあったら教えてください。 これは、ANo.#1のitohh さんの回答がいいと思います。 あとは、プロジェクトをビルドすると、コンパイル&リンクされ、プロジェクトの設定で指定した場所にDLLファイルが作成されますので、外部プログラムから、変数や関数を利用できます。 #ちなみにVC6.0 は、MSCバージョン12です。統合環境でなくても、Winアプリを作成できます。 #あの統合環境が嫌いで、エディタでソースを書いて、DOS窓でmake(nmake)している人や、 #自分流で使いやすいGUIのツールを作ってしまった人(↓)もいます。
- itohh
- ベストアンサー率45% (210/459)
こんにちは。itohhといいます。 Googleなどで検索すると結構な数がヒットしますよ。 「DLL 作成 VC」で検索した結果をいくつか載せておきますね。 ・DLL作成 http://www2s.biglobe.ne.jp/~maekawa/dev/vc/dll/make.html http://hp.vector.co.jp/authors/VA019517/howtodll.html