• ベストアンサー

DLLとプロジェクト

 過去に質問していたらすいません。 DLLは複数のアプリケーションをマルチタスクで活用するソースプログラムだと認識しているのですが、まちっがていたら指摘してください。  DLLのプログラムの書き方がわからないので、参考になるページを教えてもらえないでしょうか。言語はC言語です。DLLをC言語で書くのかもわからないので。。  プロジェクトの概念があまりわからないので、そちらの方も参考になるページまたは「かきこ」よろしくお願いします。  

  • Nickee
  • お礼率79% (107/134)

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

  • ベストアンサー
  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

DLLの意味は下記URLを参照して下さい。 DLLを使って何をしたいのかが解らないと... もしCOMが作りたいならATL【Active Template Library】 関係の書籍をさがして下さい。 VBから入門したほうがCOMを理解するのが簡単かもしれない

参考URL:
http://www.e-words.ne.jp/view.asp?word=dll
Nickee
質問者

お礼

さっそくATL関係の書籍をさがして読んでみます。 ありがとうございました。

その他の回答 (1)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

「複数のアプリケーションをマルチタスクで活用するソースプログラム」と言うのは間違いです。 まず、複数のアプリケーションから使えるかどうかは DLLの作り方とそのインターフェースをどこまで公開 するかにもよります。また、DLLはDLLを呼び出す 呼び出しもとのアプリケーションが必要になります。 SUSIEプラグインがここで言うDLLに該当します。 また、マルチタスクで動作するかどうかも作り方 次第です。「スレッド」を意識した作りにする 必要があります。 最後にDLLは「ソースコード」から作成される 「プログラム」です。 P.S. まずは一冊参考図書を買って読んだほうが良いですよ。

Nickee
質問者

お礼

ご意見ありがとうございます。 ただ、どのような本を買っていいものか、わからなかったので、参考となるページやこの分野の名前とかを知りたかったのですが。。C言語の本も関数使用のことしか述べていないものが多かったものですから。参考URLを教えてもらえれば幸いです。

関連するQ&A

  • DLLから他のプロジェクト変数の参照方法???

    C#でWindowsフォームのアプリケーションを作りました 構成は親のフォームのプログラムFormMain.csと5ケの子供プログラムFormSub1~5.csです データの受渡しは親プログラムの中に class CommonData { static public bool BoolData = true; static public int IntData = 1; static public string StringData = "冬が来ました"; } を作り、子供プログラムの中で if (CommonData.BoolData == false) ......... int j = CommonData.IntData; CommonData.StringData = "きっと春も来るでしょう"; などとやっておりました ところが今回事情があり、Windowsフォームのアプリケーションのプロジェクトとは別プロジェクトとして.NET C++でDLLを作らなくてはならなくなりました サンプル等を参照して何とかDLLを作り動かしましたが、DLLの中で上述のCommonData.BoolDataを参照しなくてはなりません デバックではDLLの中でCommonData.BoolDataに変わる固定値を臨時に設定してロジックを検証しました ところが本番ではWindowsフォームのアプリケーションのFormMain.csの中に規定されたCommonData.BoolDataを参照しなくてはなりません DLL側でどのようにすれば良いのでしょうか? なおCommonData.BoolDataのtrue、falseは時々刻々変化しますので、DLLが起動される度に最新の状態を参照したいのです

  • gdiplus.dllを使わないプログラム開発

    はじめまして、 ”Microsoft Visual C++ 2008”にてダイアログベースのプログラムを書いています。 windows2000に対応するために、gdiplus.dllを使用しないプログラムを作成したいのですが、 新規作成したプロジェクトをそのままビルドしただけでもgdiplus.dllが読込まれてしまいます。 読込まなくするには、どのように設定を行なえばよいのでしょうか。 それとも”Visual C++ 2008”ではgdiplus.dllを使用しないダイアログベースのプログラム開発は不可能なのでしょうか。 動作対象OS:win2000(SPなし)以降 開発環境: 言語:Visual C++ 2008(visual studio 2008 professional edition) テンプレート:MFCアプリケーション アプリケーションの種類:ダイアログベース 以上、よろしくお願いいたします。

  • exeファイルはどのdllを参照すべきか、知っているのでしょうか。

    dllとは、プログラムが実行時に参照するものですよね。 よく使われる機能があらかじめ作られているものですよね。 私はC言語しか知らないので、C言語でプログラミングすることで話を進めさせてください。 (とは言っても、ごく初歩的なプログラムが組めるだけの素人です。) OSはWindowsということにします。 C言語は、関数の集まりでソースが書かれています。 dllも、中身に関数の実体が記述されている、そういうイメージでしょうか。 私がもっと勉強して、複雑なプログラムを組んだりすると、 「あ、これはdllに実体がある機能だから、いちいち実装を書かなくてもいいんだな」 と考えて、ソースファイル( ~.c )の中でその関数を使うだろうと思います。 私がよくわからないのはここからです。 dllにある関数をソースで使って、無事コンパイルして、さあリンクしてexeを作りましょう、 というときに、リンカ(リンクを行うプログラム)は、 「そんな関数、実体がないぞ」 って文句を言ってこないのでしょうか。 いや、リンカは、dllに実体がある関数だということを知っているはず。 でもそれって、いちいち 「この関数はどこどこにある ○○.dll というdllに書いてあります」 というふうに、リンカに教えてあげなくてはいけないのでしょうか。 (それってまさか、ソースに書くわけじゃないですよね? ) それから、 exeファイルっていうのは「この機能はdllに行わせる機能だ」ということを知っているのでしょうか。 dllに行わせる機能だということを知っているとしても、 どのディレクトリにある なんと言う名のdllに その機能が書かれていることまで知っているのでしょうか。 (でもそこまで知っていたら逆に、ディレクトリ構成の違うマシンでは実行できなくなってしまうし。) そういうような原理的なことを教えてください。

  • VS2005のセットアッププロジェクトにOracleDataAccess.dllを組み込みたいのですが・

    お世話になります。 DB:Oracle10gR2 OS:Windows Vista Buisiness 言語:VB2005 上記の環境にてPL/SQLにて作成したストアドをVB2005よりODP.NETにてコールするプログラムを作成しました。 それを実際のユーザ環境にセットアップすべくセットアッププロジェクトにて、インストーラを作成しましたが「OracleDataAccess.dll」が上手く組み込めず、ユーザ環境でモジュール実行すると、エラーが発生します。 ※エラー内容は詳細忘れましたが「OracleDataAccess.dllが見つかりません・・例外ハンドル・・」 試しにODP.NETをインストールすると上手く実行できました。 「OracleDataAccess.dll」のセットアッププロジェクトへの組み込み方ご存知の方おられましたらご教授いただけませんでしょうか? 以下の手順で実行しました。 ファイル→追加→新しいプロジェクト→ セットアップと配置より、セットアッププロジェクトを選択しOKを押す→ 対象コンピュータ上のファイルシステムで、「アプリケーションフォルダ」にて右クリック→追加→プロジェクト出力→プライマリ出力を選択すると、以下のようになります。 名前 「ソリューション名」のプライマリ出力(種類:出力) Oracle.DataAccess.dll(種類:アセンブリ) 尚、ユーザーのデスクトップ、ユーザーのプログラムメニューには「ソリューション名」のプライマリ出力(種類:出力)のみが存在します。 何か手順が抜けているのでしょうか? 宜しくお願い致します。

  • AccessVBAからC言語のDLLの呼び出し方

    初心者です。はじめまして お世話になります。 概要:C言語で作成したDLLをVBAで呼び出す。 タイトルの通り、C言語で作成したDLLをVBAで呼び出したいのですが、うまく 呼び出すことができず、「エラー番号:49 DLLを正しく呼び出せません。」 というエラーが返ってきてしまいます。 DLLの作成手順もしくはDLLの呼び出し方でおかしな所があればご指摘頂けない でしょうか? C言語のDLL、作成手順は以下の通りです。 DLL作成環境:Visual C++ 6.0 DLL作成手順----------------------------------------- (1)プロジェクトをDLL用に作る  新規作成→プロジェクト→Win32 Dynamic-Link Library→空のDLLプロジェ クト (2)ファイル追加  ソースファイル+すべてのヘッダファイルを追加 (3)DLLを出力対象の関数に「_declspec(dllexport)」をつける 例)------------------------------------- _declspec(dllexport) short dlltest (char *str1, char *str2) --------------------------------------- (4)char を unsigned char へ変換する(/J コンパイルオプション) (5)プロジェクトをデバッグモードからリリースモードに切り替える (6)ビルド実行 (7)「Release」配下に.dllとlibができる。 -作成手順完----------------------------------------------------- 実際のVBAのDLLの呼び出しは以下の通り行っています。 -AccessVBAにてDLLの宣言及び、呼び出し------------------- '呼び出し宣言 Public Declare Function dlltest _ Lib "C:\Project\Dlltest\Release\dlltest.dll" _ (ByVal st1 As String, _ ByVal st2 As String) As Integer 'DLL呼び出し KEKKA = dlltest(string1, string2) -呼び出し完------------------------------------------------ これで実行するとエラーが返されていまいます。 なにぶん、初心者で今回初めてVBAでのプログラミングを行っているので観点 の抜けなどが多分にあると思われます。 どんな小さなことでもご指摘頂けないでしょうか? 宜しくお願い致します。

  • 複数プロジェクトをビルドしたとき、DLLに新しく追加したClassのみがリンクエラーになる

    VC++6.0上で、複数の関連するプロジェクトをすべてビルドしたときのリンクエラーで悩んでいます。 現在、ワークスペースには、以下の複数のプロジェクトがあります。 ・Mainとなるプロジェクト ・上記のMainプロジェクトがDependしている、DLLのプロジェクト 問題は、DLLプロジェクトに新しいClassを追加したところ、単体でビルドすると成功するにもかかわらず、MainプロジェクトをActiveにしてリビルドしたときに、新しく追加したClassだけが下のように未解決にされてしまうということです。 ”error LNK2001: 外部シンボルXXX(追加したクラスのコンストラクタ)は未解決です” このClassはDLLの内部で使用されており、Mainプロジェクトから直接呼ばれるClassではありません。また、このClassの使用箇所をDLLのソースからコメントアウトすると、リンクエラーは解消されます。 VC++に不慣れかつ、他人の作ったプロジェクトなこともあり、現在の設定内容がいま一つわかっていないところがあります。問題はそのあたりだと思うのですが、はっきりしません・・・。 調べてわかっていることは、以下です。 ・Mainプロジェクトから呼ばれるDLLのHeaderファイルにはパスが通っている。 ・Mainプロジェクトから呼ばれるDLLのLibraryにはパスが通っている。また、#pragmaによりリンクされている。 ・Mainプロジェクトから呼ばれるDLLにはパスが通っている。 ここを確認してみたらどうか?など、ヒントをもらえたらありがたいです。 よろしくお願いいたします。

  • C#でのDLL

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション 開発初心者です。よろしくお願い致します。 テキストファイルを読み込んで、その中にある文字列を3つほど返却値として返すDLLを作成したいと思っています。 新規にクラスライブラリのテンプレートでプロジェクトを作成し、プロジェクトメニューからコンポーネントの追加をしました。 質問事項 1.まず、DLLを作成する手順として、上記の方法でよろしいのでしょうか? 2.ファイルからテキストを取得するところまではできるのですが、それを返却値として、呼び出し元の別プロジェクトへは、どうすればよいのでしょうか? どなたか、ご教授お願い致します。

  • DLLは解読可能ですか

    C言語初心者です。 目標としてVisualC++でDLLを作ろうと思っています。 DLLはコンパイルするとできると思うのですが、コンパイル前に記述しているソースは簡単にわかってしまうものでしょうか。それとも解読することは可能だけど素人ではかなり苦労するものでしょうか。 よろしくお願いします。

  • msvcr71.dll と msvcp71.dll

    msvcp71.dllは、C+ランタム msvcr71.dllは、Cランタムという プログラムですが、ソフトウェアを動作させる際に必要となるファイルでなにかのアプリケーションでインストールされるそうですがどんなときにインストールされるのでしょうか。 ネットで調べてみると、 「Microsoft C++ Runtime Library」とありますが。どのタイミングでインストールされるのか。 msvcp71.dllは、C+ランタム msvcr71.dllは、Cランタムが入っているPCと入っていないPCがあるのですが。なぜバラバラなのか。

  • CからMFCのDLLは呼出し可能?

    C言語プログラムからMFCで作ったDLL(MFC AppWizard)を呼び出すことは可能でしょうか? Cで作ったDLL(Win32 Dinamic-Link Library)と同じように呼び出せるのでしょうか? ご教示お願いいたします。

専門家に質問してみよう