• 締切済み

複数のCのみファイルをリンクし一本の実行ファイルまたはDLLを作成する方法

itohhの回答

  • itohh
  • ベストアンサー率45% (210/459)
回答No.1

こんにちは。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

関連するQ&A

  • ヘッダファイルを使わずに定義する方法

    新しい関数を使ったソースを古いOSでコンパイルすると、外部シンボル...Aが未解決になります。 ヘッダファイルでその関数のプロトタイプを書くとコンパイル可能になると思いますがヘッダファイルを使わずに*.cppにプロトタイプを書くようなことは可能ですか? __declspec(import) DWORD Win7OnlyEx(LPTSTR);

  • プリコンパイル済みヘッダー ファイルを作成はどこ?

    VisualStudio(以下VS)2010にて、プリコンパイル済みヘッダー ファイルを作成するが見つかりません。 どこにあるのでしょうか? VS2008だと、プロパティ > プリコンパイル済みヘッダーにあるのを確認しています。 MSDNを見るとプロパティにあると書いてあるのですが、書いてある場所にはありません。 そもそもプリコンパイルのやり方が変わったりしたのでしょうか? どこに移動したのか教えていただきたいです。よろしくお願いします。

  • DLLでLIBファイルが作成されない

    DLLを作るプログラムをしているのですが、どうしてもコンパイル時にLIBファイルが作成されません。 1>warning C4091: '__declspec(dllexport)' : 変数が何も宣言されていないときは、'DDDClass' の左辺を無視します。 と警告が出てしまいます。 私が書いたソースは以下の通りで、クラスとそのメンバをEXPORTしたいのです。ここで、最後のコメントを外して有効にするとLIBファイルが作成されることはわかっています。また、クラスのメンバにEXPORTをつけてもオーバーライトだと怒られてしまいます。 どのようにしたらLIBファイルが作成されるようになるのでしょうか? ■■■stub.h■■■ #ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport) #else #define EXPORT __declspec (dllexport) #endif typedef int (*HOGEHOGE)(int i); EXPORT class DDDClass{ private: int num; HOGEHOGE c; public: DDDClass(); int CALLBACK counter(); int CALLBACK touroku(int (*b)(int i)); }; ■■■stub.cpp■■■ #include <windows.h> #include "Stub1.h" int WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved){ return true; } EXPORT class DDDClass; DDDClass::DDDClass(){ num =0; c = NULL; } int CALLBACK DDDClass::touroku(int (*b)(int i)){ c = b; return 0; } int CALLBACK DDDClass::counter(){ //c = b; c(num); num++; return 0; } /* EXPORT bool CALLBACK aaaaa(){ return true; } */

  • CファイルとCPPファイルのDLL作成

    CファイルとCPPファイルを同一DLLに取り込むことは可能でしょうか?もし可能であれば実現方法も教えて頂きたいのですが。 現状は別DLLを作成しているのですが、両ファイルを取り込んでビルドすると外部関数宣言をしている箇所がエラーになってしまいます。(extern "C"の箇所が・・・)

  • C++のdllの作り方を教えてください。

    こんにちは。 先週、「UNIXのC++で共通クラスを作りたい。」って言う質問をした orange_pieと申します。 そのバージョンアップ質問として、作成した共通クラスをDLLにして みんなに提供したいのですが、コンパイルはアーカイブを作る時と どう違うのでしょうか? ちなみに、コンパイルした後でarコマンドを使ってアーカイブを作っていました。 % gcc -c aaa.cpp % ar -r libaaa.a aaa.o dllを作るには、ヘッダーファイルの記述に何か特別なものが必要ですか? また、できあがったdllを使う側では、ヘッダーファイルをインクルードして LIBパスの通ったところにdllを入れておけば良いのでしょうか? どなたか教えてください。

  • dllファイルの作成手順

    今回初めてVisualStudio C++ にて作業しています。 初歩的な事を聞いてしまっているかもしれませんが、宜しくお願いします。 【環境】 WinXP SP3,VisualStudio2008 【目的】 InstallShield2009にて、カスタムアクションであるプロセスが 起動されているか否か(ロックファイル有無)の判定をしたいのです。 InstallShieldのサポートより指南頂いた回答は、 PSAPI.dll に含まれる PSAPI ライブラリを使用する方法でした。 【行った操作】 http://support.microsoft.com/kb/175030/ja http://www.networld.co.jp/is/pdf/tips/tips5.pdf まずは新アクションの追加を試みようと、下段リンク先にあります 手順に従いC++テンプレートでのCustomActionの作成をしました。 VisualStudio2008を起動し、 新しいプロジェクト>Visual C++>空のプロジェクト と選択。 C:\CustomActionにプロジェクト「CustomAction」を新規作成。 プロジェクト(P)>CustomActionのプロパティ>Release>リンカ 「$(OutDir)\$(ProjectName).exe」を 「$(OutDir)\$(ProjectName).dll」に書き換える。 ソースファイルからCustomAction.cppとCustomAction.defを新規作成。 CustomAction.cppとCustomAction.defは、 リンク先URLのサンプルコードと同じものです。 ビルドによってできたdllを用いて、URL先資料2/5ページ以降の 手順書通りにmslを作成するも、出来上がったmsiは 実行後即、異常終了するものでした。 何処かに手順ミスがあるのは間違いないのですが、 InstallShieldの操作の方は何度も見直していますので ミスがあるとしたらdllの作成で何処か間違えがあるのではと思い、質問いたします。 InstallShieldと言う、公になっているノウハウの少ないツールがらみではありますが、宜しくお願いします。

  • 初心者です。VisualStudioについて教えてください。(C++)

    初心者です。VisualStudioについて教えてください。(C++) VisualStudioのWindowsフォームプロジェクトを作成すると 「Form1」という簡易画面が自動で作成されます。 その画面にボタン等を追加していくと、そのボタン押下時の処理が 「Form1.h」にどんどん追加されていきます。 なぜヘッダファイルに処理の実装を記述していくのでしょうか? 基本的に、ヘッダとは関数やクラスを定義するだけのもので 実装はcppファイルに記述していくものだと研修等で教わったのですが。 なぜなのでしょう? ご教授下さい。 また、「Form1.h」ではなく「*.cpp」ファイルに実装を記述したい場合 どうのようにすればよいのでしょうか?

  • VisualStudio2005でのDLL作成

    開発環境 OS:WindowsXP SP2 SDK:VisualStudio2005 StandardEdition 言語:VC++ Win32コンソールアプリケーションのDLLを選択 空のプロジェクトを使用 作成したいのはVBなどから呼び出せるWin32DLLです。 他のホームページを参考にして以下のようなファイルを作成し ビルド->コンパイルしたところdllファイルはできましたが AccessVBAから参照設定ができませんでした。 どこを修正すればよいか教えてください。 <dlltest.cpp> #define EX __declspec (dllexport) #include <iostream> #include <windows.h> EX int fnWindowHook(void); BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call){ case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } EX int hundred(){ return 100; } <dlltest.def> LIBRARY "dlltest1" EXPORTS disp @1

  • DLLファイルを分けたい

    Win2K VC++ 6.0 でDLLを作成しています。 現在DLLの関数が多すぎて作業しにくいですが、 3つに分けたいですが可能でしょうか。 Test.def Test.h Test.cpp Test.defの中身  FunA FunB FunC FunD FunE FunF FunA,FunB ==> A.CPP FunC,FunD ==> B.CPP FunE,FunF ==> C.CPP にしたいですが、方法がわかりません。

  • Visual Studio で実行ファイルが作れません

    C言語の勉強のため、VisualStudio2005standard を初めて使い始めましたが、ビルドできたのに実行ファイルができません。 ファイル→新しいプロジェクト→プロジェクトの種類→VCC++→win32→コンソールアプリケーション→プロジェクト名の入力→アプリケーションの設定→完了 このように操作したら、ソースフォルダの下に拡張子 .cpp のC++のひな形ができたので、それにソースを書いて、拡張子を .c に替えて保存し、ビルドしたらエラーはありませんでした。 しかし、オブジェクトファイルまたは実行ファイルは作成されていず、メニューの実行コマンドも無効の表示で、実行できませんでした。 操作の誤り、何らかの設定の必要があればご指摘いただきたいです。 よろしくお願いします。