• ベストアンサー

VC 7.0 MFCでdllを作ろうと思うのですが

dllを途中から変更したことはあるのですが 今回始めから作ろうと思い、 VC 7.0 MFCでdllを作ろうとしたのですが わかりやすいHPはないでしょうか? また 簡単な雛形があれば助かります。 よろしくお願いいたします。

  • gotyan
  • お礼率91% (172/188)

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

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

VC5.0及び6.0でのサンプルですが、基本的に同じだったハズです。 Mi-Ke's Home Page ++ - VBで使用できるDLLの作り方 http://www.angel.ne.jp/~mike/vb_dll/index.html T-MARU Home Page-ProgramTip's - VC・VBでDLLを扱うサンプル http://www.geocities.co.jp/SiliconValley-SanJose/5309/dll_test.html DLLを作る目的はVBからの呼び出しが多いので「VB VC DLL」などで見つかります。 後はさらにサンプルソースの「DllMain」などの単語を加えると絞り込めます。

参考URL:
http://www.angel.ne.jp/~mike/vb_dll/index.html, http://www.geocities.co.jp/SiliconValley-SanJose/5309/dll_test.html
gotyan
質問者

お礼

大変助かります ありがとうございます。 今から読んでみます。

関連するQ&A

  • MFCのexeのプログラムを MFCのdllに書き換えたい

    VC++6.0を使用しています 新規作成 MFC AppWizard(exe) 新規 OK [ステップ1] ダイアログベース 次へ [ステップ2/4] 次へ [ステップ3/4] 次へ [ステップ4/4] 終了 で作られた、雛型のexeをそっくりMFCのDLLに書き換えたい と考えています exeで作られたアプリを他のユーザーがVB6.0からDLLとして呼び出したいので書き換えて欲しいと頼まれました MFCのDLLも雛型は簡単に出来上がるのですが 以下の関数を独立したオブジェクトにして、VB6.0からDLLの関数VBFUNC1として呼び出したいのですが、VBから呼び出すと AfxEnableControlContainer();でアサートで引っ掛かってしまいます ダイアログを使用したMFCのEXEをDLLとして使う場合の、コーディングについてご指南ください BOOL CAaaApp::VBFUNC1() //BOOL CAaaApp::InitInstance() {   AfxEnableControlContainer(); #ifdef _AFXDLL   Enable3dControls(); #else   Enable3dControlsStatic(); #endif   CAaaDlg dlg;   m_pMainWnd = &dlg;   int nResponse = dlg.DoModal();   if (nResponse == IDOK)   {   }   else if (nResponse == IDCANCEL)   {   }   return FALSE; }

  • mfc vc++2005 で構成が正しくない・・・

    vc++2005 mfcで作成したプログラムで上記が出て他のPCで動きません。 mfc以外はファイルのコピーをするとかだけの単純なツールなのでmfcが 悪さしているとは思います。 mfcをスタティックでリンクにして、コード生成のところのマルチスレッドDLLを マルチスレッドに変えるとやはりいけますが、別にあったwindows7ではmfcと コード生成のところを変えなくても問題なくいけました。 vc++2005 redistributable パッケージを入れても変わりません。 mfcは別物なのでしょうか?? ネットを見ているとredistributableパッケージを入れれば大丈夫!!という 感じなのですが。 すいませんがどなたかご教授ください。

  • 「MFC40D.DLLがみつかりません」とでてしまいます

    VC++ Standard Edition 4.0を使ってデバッグモードでコンパイルしたプログラムを友人に渡し、起動すると 「プログラム開始エラー  必要なDLLファイルMFC40D.DLLが見つかりませんでした。」 とでて起動できませんでした。 私のコンピューターにあるMFC40D.DLLも渡してc:\wndows\system\にいれてもらっても同じメッセージが出るそうです。 どのようにしたら友人のパソコンでも実行できるようになるでしょうか?

  • VC++6で作成したDLLをVC++.NET2003から呼び出せますか

    現在、VC++.NET2003で作成しています。あるメーカから提供されているDLLがあるのですが、そのDLLとのリンクまではできたのですが、実行するとエラーになってしまいます。 (プログラムが異常終了するのではないのですが、そのDLLからの戻り値がエラーになり、期待した結果が得られません。) そのDLLはVC++6で作成したものらしく、マニュアルには、VC++6で作成したアプリケーションからの呼び出し方法が、記述されていました。 VC++6でアプリを作成すれば、正常に呼び出せることは明白なのですが、いかんせん、VC++.NET2003での開発が、ある程度進んでしまっていますので、いまからVC++6に切り替えるわけにもいきません。 それで、一般論として、確認したいのですが、VC++6で作成したDLLをVC++.NET2003で使用することは、出来ないのでしょうか。(これから、メーカにも確認する予定ですが、まずは、こちらで確認したく、投稿した次第です)

  • VC++ msvcrt.dllについて

    いつもこちらでお世話になっております。 VC++について質問です。 VS2008にてVC++でアプリケーションを作成しました。 作成したPCとは別のPC(VSが入っていないPC)へ作成したアプリケーションをインストールし、 起動しようとしたところ次のようなエラーメッセージが出てきて、起動できませんでした。 the procedure entry point _except_handler4_common could not be located in the dynamic link library msvcrt.dll おそらくmsvcrt.dllが無いといわれているのだと思いますが、dllってアプリインストール時に 無ければ一緒に入れてくれれはしないものなんですか? こういう場合はネットからmsvcrt.dllを探してもってくるしかないのですか? また、msvcrt.dllのmsはマイクロソフトの略だと思うのですが探してみるとマイクロソフトのHP以外でも多数見かけるのですがなぜでしょうか? 初歩的な質問で申し訳ありません。 ご存知のかたいらっしゃいましたらご教授願います。

  • VC++6.0からVBで作成したActiveX.DLL内の関数が呼出しできない

    VB6.0で作成したActiveX.DLLをVC++6.0(Win32SDK)側で 呼び出すプログラムを作成中です。 VB側(DLL)では問題なく作成できています。 Classに1つPublic関数を作成しただけです。 (Instancingは5MultiUseにしてあります) しかし、VC++側の呼出しでDLL内の関数が 呼び出せないのです。 LoadLibraryExでDLL自体のハンドルは取得できるのですが GetProcAddressで関数の取得時にNULLが返ってきてしまいます。 今まで試したことは ・VBからの呼出しはOK ・MFCだとOK ・SDKでもuser32.dll呼出しのサンプルは関数も実行できる です。 今からMFCへ以降するのは厳しいのでSDkでの方法を 知りたいです。 VB側が悪いのかもしれませんが、関数1つですし、 いじるところもほとんどないので多分VC++側だと 思っています。 なにか注意点とか確認するところをおしえていただければ 幸いです。 環境 Windows2000 SP3 VB6.0 SP5 VC++6.0 SP5 Win32SDK

  • .NET VC++ DLLの作成方法

    以前VC++6.0でDLLを作成しました。 このときに新規作成の項目からWin32 Dynamic Link Libraryを 選択して作成したのですが、 .NET2003で同様のものを作成したい場合 どのプロジェクトから作成するとできるのでしょうか? .NETになったことで仕様が変更されて同じようにDLLを作成することは できませんか? どなたかお教えください。よろしくおねがいします。

  • VC++のDLLファイルをVBで読み出せません。

    お世話になります。 プログラムをやり始めて3か月の初心者です。仕事で以下のような事をしていますが、うまくいかず悩んでいます。 プログラム(1):VB 2008年版 メインプログラム プログラム(2):C言語 2006年版 プログラム(3):VC++ VISUAL STUDIO2012 EXPRESSを使用 ■今のプログラム (2)のdllファイルを(1)で呼び出しています。問題なく動きます。 ■やりたい事 (2)のプログラム内容を変更したのが(3)です。そのdllファイルを(1)で呼び出したいです。 ⇒しかし、(3)のdllファイルを読み込むことができません。((3)のdllファイルは作れました。) (3)はVC単独では正しく動作します。 (1)のプログラムに、(2)を呼び出すときと同じように(3)用のプログラムを追加しました。作った(3)のdllファイルは指定したフォルダにきちんと入れています。 コンピューターに詳しい先輩が時間をかけてみてくれたのですが、結局わからずじまいでした。 ■質問 VBの型が古い、EXPRESSを使っているからできないのでしょうか? VCでdllを作って、VBで呼び出すまでの流れをわかりやすく紹介した書籍やWEBなどあればご教示頂けませんでしょうか? よろしくお願いいたします。

  • VC++.NET DLLからのダイアログの表示

    こんばんは。 VC++.NETでDLLを作成しました。 内容はダイアログを表示させるだけの単純なもので DLLの種類はMFC拡張DLLで作成しました。 (CDIALOGを継承したクラスTESTDIALOGのコンストラクタ、デストラクタがあるだけのもの) これをテスト用の単純なMFCアプリケーションで呼び出したところ ダイアログを表示させることができましたが 別の複雑なアプリケーション(DLLからDLLを呼ぶなどしている)で 呼び出したところダイアログが表示されません。 コンパイルエラーなどもでないし 何がいけないのか分かりません。 呼び出し側ではメニューにイベントハンドラを作ってそこで TESTDIALOG dlg; dlg.DoModal(); としているだけなのですが・・・ (デバッガで追ったところMFCのdlgcore.cppのCDialog::DoModalの m_lpDialogTemplateNameが不適切なptrとなる辺りに原因はありそうなのですが何故そうなるのかわかりません。) どなたかダイアログが表示されない原因がお分かりになる方 よろしくお願いします。

  • MFC42D.DLLの最新バージョンは?

    いつも参考にさせて頂いております。 VC6において、同一プログラムをデバックで実行した場合、 WINDOWS2000環境では、エラーなくデバックできるのですが、 WINDOWSXP環境では、アセンブリの混合モードになり、うまくいきません。 DLLは、動的扱いをしています。 また、リリースモードでは、うまく実行できます。 MFC42D.DLLのバージョンが下記のように違っていたので、 最新バージョンを確認したいと思い、質問させていただきました。  WINDOWS2000では、6.0.8665.0  WINDOWSXPでは、6.0.9782.0 また、特に、意識して、MFCをインストールした記憶はありません。 現在、VC++について、勉強しながらやっており、初心者ですが、 よろしくお願いします。

専門家に質問してみよう