• ベストアンサー

DLLの作り方および使い方について

http://hata.cc/docs/DLL/contents.html ここを見て、作ってみたのですがうまくいきません。 ここよりも簡単に書いていただけると助かります。 ここにあるサンプルプログラムの使い方がわからないほどです。 よろしくお願いします。

  • da2
  • お礼率8% (5/58)

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

  • ベストアンサー
noname#2009
noname#2009
回答No.1

関数宣言の前に __declspec(dllexport) を付けてやって下さい。(それだけ) プロジェクトの新規作成は「Win32 DinamicLibrary」を 選択し、後はフツーにソースを書けば良いです。 参考URLはVCバージョン4のものらしいですが 現在(Ver6)でも一緒です。 クラスをDLL化する場合も同様です。 class __declspec(dllexport) CXXClass { ~ }; ただしこちらは、呼び出し側で __declspec(dllimport) を付けます。 クラスの話で無ければ、後者の説明は無視して下さい。

参考URL:
http://www.netlaputa.ne.jp/~hijk/study/nt/dll.html#ASampleDllSrc

関連するQ&A

  • VisualBasic6.0からVisualC++で作成したDLLを呼

    VisualBasic6.0からVisualC++で作成したDLLを呼び出す、簡単なプログラムの仕方を教えてください。 初心者ですが、VisualBasic6.0からVisualC++で作成したDLLを呼び出す簡単なプログラムの仕方、または、サンプル等がありましたらどうぞ宜しくお願いいたします。初心者なので、可能な限り、簡単なプログラムのサンプルがあったら嬉しいです。

  • VC++でDLLを作っていますがぁ~???

    1ソリューション1プロジェクト主義です ⇒ 実はゴチャゴチャになってしまうのが怖いだけです ですからDLLを作る際にもDLL自体とDLL呼出し元を別のソリューションで作り、呼出し元のリンカーの入力の『追加の依存ファイル』でDLL.libを指定しています そうするとリビルドで『DLL.dllが無いぞ!』とのエラーが出ます 仕方がないのでDLLソリューションから呼出し元EXEのディレクトリィにDLL.dllをコピーするとOKになります 質問 DLLソリューションからDLL.dllをコピーしなくとも良い方法はありますか? 出来ましたら以下の愚問にもお答え頂ければ幸いです 愚問(1) DLL.dllとは何者ですか? 私にはDLL.libが必要なのですがぁ~ 愚問(2) DLLを作成する事例の各種のサンプルでは同じソリューションにDLLと呼出し元を入れて、出来上がったDLL.libのパスを呼出し元プログラムのプロジェクトの追加の依存ファイルに書込んでいます サンプルのように同じソリューションに入れるメリットは何ですか? 愚問(3) DLLの文字セットには『設定なし』を指定しています。呼出し元の文字セットはマルチバイトです。なぜ整合性が取れるのでしょうか? 宜しくお願い申し上げます

  • DLLの作りかた

    サンプルで配布されたアプリケーションのEXEファイルをDLL化して、自作するアプリケーション上で利用したいと思っています。 DLLってどうやって作成していくのでしょうか? 初心者にとって、この道は険しいでしょうか?

  • gogo.dllの読み込みについて

    MarineCatさんの「午後のこーだ利用の手引き」にあるサンプルプログラムを参考に、gogo.dllをVisual C++2005で使いたいのですが、ビルド完了し、実行すると「保護されているメモリに読み込みまたは書き込みを行おうとしました。」とのエラーが発生しました。何が悪いのか分かる方、教えてください。

  • dllファイルはどこに置けばいいの?

    必要なdllファイルをダウンロードしたのはいいのですが、これは適当な場所において置けばいいのでしょうか? DLLファイルというのは、よく使われるプログラムだから、節約のためにそれぞれのソフトに組み込ないで、共用プログラムとしたものがDLLファイルという認識であっていますか?

  • VC++アプリケーションフォームにDLLをリンク

    単純なC++などは適当に使えるのですが、マルチスレッドのプログラムについては初心者です。 VC++2010ExpressEditionのアプリケーションフォームを用いて ボタンを押すと、テキストに入力した数値をDLLの関数に送り、その計算結果を、ラベルに表示する、という単純なプログラムを作成しています。 DLLを利用しないで、Form1内に計算式を作った場合には、正常に動かすことができます。 しかし、DLLの関数を利用する方法がわかりません。 DLLを呼び出すようにプログラムを書いても、ビルドするとエラーが出ます。 インターネット上を30時間位いろいろ調べて試したのですが、分かりませんでした。 もう限界になりましたので、ここに投稿しました。 解決方法を教えて頂けますよう、お願い致します。 DLLは下記のような単純なもので、Sample.cppとSample.defで構成されています。 //+--- Sample.cpp ---+ #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <windows.h> #include <stdlib.h> #include <stdio.h> //---- #define ABC_EXPFUNC __declspec(dllexport) //+------------------------------------------------------------------+ BOOL APIENTRY DllMain(HANDLE 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); } //+------------------------------------------------------------------+ ABC_EXPFUNC double __stdcall SecretFunc(double a, double b) { double c = a + b; return(c); } //+--- Sample.def ---+ LIBRARY Sample EXPORTS SecretFunc

  • DLLの使用時トラブルについて

    プログラム初心者です。 基本的な内容かもしれませんが ご教示のほどよろしくお願いいたします。 今、マクロでプログラムを記述しています。 実際には、サンプルコードがあるので書き写しなのですが 書き写してもエラーがでて下記の疑問についてご教示頂ければ と思いよろしくお願いいたします。 <質問内容> 使用するDLLのプログラムが入っていないパソコンで DLLを定義すると下記のようなコメントが出るのでしょうか? それとも、他の原因によるものでしょうか? (書き方はサンプルコード丸写しで間違えている可能性は不明です。) コンパイルエラー ”End Sub、End FunctionまたはEnd Property以降にはコメントのみが記述できます。” ローカルなDLL(DLLという言い方は全てローカルという定義なのか不明ですが。)があり、それを定義するため、subプロシージャの後にDeclareしたのですが、ステップインするとこのラインで 上記のコンパイルエラーがでます。 内容は至って当たり前(解釈が間違えていなければ)と思うような内容で、私は関数の後にプログラムを書くのはダメですよと理解しました。 (あってればいいんですが。。) 実際に、”ダウンロードしてやってみればいいじゃないか”という 回答になるかと思いますが現状は困難ですので申し訳ありませんが ご教示のほどよろしくお願いいたします。 (後々には、ダウンロードして確認する予定ですが、事前確認として 知っておきたく。)

  • Dllの作成について

    以下はVC++を使いました。 Dllの関数を扱うプログラムをつくる際に、dllのヘッダとlibを使う場合と、dllのみ必要な時の二種類があります。 どちらも宣言部分のみを先にプログラムに読み込ませて実装部分をプログラム実行時にexeと結びつけるんですよね。 この時どちらもdllが必要なら、上の違いによるメリットやデメリットはなんでしょうか。

  • Visual Studio .NET C# でDLLを作成し、VB.N

    Visual Studio .NET C# でDLLを作成し、VB.NETで呼び出す初心者向けのサンプルについて  現在、Visusal Studio .NET C#でDLLを作成して、それを、VisualBasic.NETのWindowsアプリケーションで呼び出す簡単なプログラムを作成したいと思っているのですが、書籍をあたってもなかなか参考になる書籍がみつけられなく、サンプルのサイト又は、自分でそのようなプログラムを作成している人にぜひご教授願いたく、質問させていただきました。当方、初心者ですので、何卒宜しくお願いいたします。

  • DLLのパス取得

    WindowsXP+OFFICE2000環境です。 ファイルの構成は同じホルダの中に AA.xls、BB.DLL、CC.iniになっています。 AA.xEXCELシート上にボタンをつけて、ボタンを押すと、DLLを呼んでいます。 このDLLの中ではDllの位置のINIファイルを読んでいます。 Dllの中でfinder.FindFile("CC.ini"); を用いて呼んでいますが、INIファイルの検出ができません。なぜでしょうか。

専門家に質問してみよう