• ベストアンサー

プロジェクトのオーバーロードの方法が分からない

VC++/MFCにおいて、(1)のプロジェクトで(2)のプロジェクトにある関数を呼び出すには、 どういった設定が必要なのでしょうか? 環境はVC2008になります。 以下イメージ図 (1)┬ test.h │└ test.cpp (2)のプロジェクトにある関数を呼び出し (error LNK2001が発生する) │ (2)┬ sample.h (1)とは別のプロジェクト   └ sample.cpp ここで基本的な処理を行っている。

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

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

(2) がライブラリ・プロジェクトならば、提供されるヘッダとライブラリを(1)に設定すればいい。

funaltu
質問者

お礼

一応、ライブラリプロジェクトに設定したら、出来ることがわかりました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 他の.CPPファイルに定義した関数を呼び出す方法について

    新規作成したプロジェクトに、 以前自分が作成した.cppファイルと.hファイルを そのまま使えないかと考えています。 (※仮にそのファイルの名前を "define.cpp" "define.h" とします) プロジェクトに新規ファイル main.cpp を作成して、 define.hをインクルードし、 以下のようなテストのプログラムを組みました。 ・../util/define.cpp---------------------- #include <iostream> #include "define.h" void test(){ std::cout<<"test."<<std::endl; } ・../util/define.h------------------------ #pragma once void test(); ・main.cpp---------------------------- #include "../util/define.h" int main(){  test();  return 0; } 上記のソースを VisualC++7.0 でビルドすると、 main.cppの3行目で以下のようなエラーが出ました。 > LNK2019: 未解決の外部シンボル "void __cdecl test(void)" が関数 _main で参照されました VisualC++で「既存項目の追加」という項目より、 実体の定義されたdefine.cppをプロジェクトに追加していないため 当然といえば当然なのですが・・・ C言語でいうところの<stdio.h>等みたいに、 わざわざプロジェクトにCPPファイルを追加しなくても 関数を呼び出せるようには出来ないのでしょうか? 全ての関数と処理をヘッダーファイルに記述すると解決ですが 物凄く見辛いのでそれは避けたいのです。 また、色々なPC間で使っているため(学校のPCなので)、 ツール自体のプロパティを弄らない方法があるのでしたら、 多少面倒でもそちらの方が好ましいです。 追加する方法があるかどうか、 あればその方法をご存じでしたら教えていただければ嬉しいです。 よろしくお願いします。

  • プロジェクトのVC6からVC9の移行時のエラー

    現在、VC6で作成したプロジェクトをVC9に移行しています。 そこで、Debug版でコンパイルするとリンク時に下記エラーがでます。 //下記が、エラー内容 1>LINK : fatal error LNK1104: ファイル 'mfc42d.lib' を開くことができません。 Release版でコンパイルすると発生しません。 他の質問で同じような内容がありましたが、その対策内容を実行しようとするも、よく解りませんでした。 //////////////下記が参考にした解決策等////////////////////////////////// 今試しにVC6で・MFCアプリ(DLL共有) ・SDIアプリ・そのほかはデフォルトという条件で作って、VC2005 Proに変換してみたところ、問題なくコンパイル/リンクまでできました。もしかしてプロジェクトの中(ソリューションのツリーの中)に明示的にmfc42d.libを登録しているということはありませんか?vcのプロジェクトは"プロジェクト名.vcproj"で、単なるテキストファイルなので、その中もよく見てください。 /////////////////////////////////////////////////// 他に解決策はありますか?

  • 【VC++2008】2つのmain()を1つのプロジェクトに含める方法

    【VC++2008】2つのmain()を1つのプロジェクトに含める方法 現在、WinXP proで、VC++2008 Express Editionを使用しています。 1つのプロジェクトでmain()がある2つのソースを 使い分けたいのですが、その方法を教えて頂けませんでしょうか。 (うろ覚えですが、VC++6.0の頃にはできたと思います。) 例えば、以下のような2つのソースを含んだ1つのプロジェクトの 設定方法を教えて頂きたくお願いします。 ※ソースを見やすくするため、全角スペースを入れています。 //ソース名:main01st.cpp #include<stdio.h> void main(){   printf("main01\n");  } } //ソース名:main02nd.cpp #include<stdio.h> void main(){   printf("main02\n");  } }

  • templateの抽象クラスについて

    VC++2003の環境なんですが、 下記の状態でtest2.a()を呼び出すと未解決の外部シンボル(LNK2019)のエラーが発生します。同じファイルでこれらを定義した場合は普通に通りました。class内で定義した場合も通ります。なぜでしょうか? test1.h : template<class T> class test1 { public: void a(); }; test1.cpp : template <class T> void test1<T>::a(){} test2.cpp : class test2 : public test1<int> {public:};

  • VC++でプロジェクト名などを変更する方法

    現在VC++で1つのプロジェクト"A"をかなりやりすすめています。 いま、まったく同じようなプロジェクトなんですか、ちょっと細かいところを変更した別のプロジェクト"B"を作りたいと考えています。 内容はかなり似たものなので、"A"をコピーして"B"としたいのですが、ファイル名や関数名、ソリューションエクスプローラなどを変更して、ソリューションのビルドをすると "B" fatal error LNK1104: コンパイラは、ファイル '.\Debug\"A".res' を開くことができません。 となっていまい、関連付けなどがどうやら"A"ファイルのままになってしまっているみたいなんです。 ちなみにリソースビューのプロジェクト名や.rcファイルの名前も変更する方法がわかりません。 それとも、新規作成で"B"というプロジェクトを作り、中身を移してきたほうが早いのでしょうか? 使い始めの初心者で申し訳ないです。 よろしくお願いいたします。

  • プロジェクトを作った際のエラー

    VisualC++ 2005 Express Editionを使用してます win32コンソールアプリケーション - アプリケーション設定 - windowsアプリケーション この新しく作ったプロジェクトを何もいじらずにビルドすると __imp__EndPaint@8 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__BeginPaint@8 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__DefWindowProcW@16 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__DestroyWindow@4 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__DialogBoxParamW@20 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__EndDialog@8 が関数 "int __stdcall About(struct HWND__ *,unsigned int,unsigned int,long)" (?About@@YGHPAUHWND__@@IIJ@Z) で参照されました。 C:\C++test\test\Debug\test.exe : fatal error LNK1120: 外部参照 19 が未解決です。 というエラーが出てしまいます 800文字オーバーしてしまうのでエラーの前半部分を消してあります この原因と解決方法を教えてください よろしくお願いします

  • VC++6.0のプロジェクトをVC++2005Expressで動かしたいがエラーが出まくってしまいます。

    VC++6.0のプロジェクトをVC++2005Expressで動かしたいのですが エラーが出まくってしまいます。 VC++6.0では正常にコンパイル終了するものがexpressだと、 ・・・string.h(135) : warning C4003: マクロ '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX' に指定された実引数の数が少なすぎます。 とか、 ・・・string.h(135) : error C2065: '_string' : 定義されていない識別子です。 とか、 ・・・string.h(135) : error C2275: '_locale_t' : この型は演算子として使用できません とかです。string.hなど、触ったこともないのですが、 express用に編集が必要なのでしょうか? ちなみに PlatformSDK などはインストールして、include,exectable,library ディレクトリなどのパスも通しています。 何か良い方法を教えてください。お願いします。

  • 【VS2008 C++】2つのプロジェクト間で共通の関数を使いたい

    【VS2008 C++】2つのプロジェクト間で共通の関数を使いたい WindowsXP上で visual studio 2008 C++ express editionを 使用しています。 1つのソリューションに2つのプロジェクトをつくり、 その2つに共通の関数を使用させたいのですが、どのように 設定すればよいか教えて頂けませんでしょうか。 ソースの内容は以下のとおりです。 具体的には、mainB.cppでcommon.cppの関数を 呼び出したいです。 //common.cpp #include <stdio.h> void showCommon(){ printf("---common-----\n"); } //common.h #include<stdio.h> void showCommon(); //mainA.cpp #include<stdio.h> #include "common.h" void main(){ printf("---mainA-----\n"); showCommon(); } //mainB.cpp #include<stdio.h> #include "common.h" void main(){ printf("---mainB-----\n"); showCommon(); }

  • 一つのソースユニットを複数のプロジェクトで共有したい

    BCB5を使っています。 複数のプログラムで共通な関数について、それらのプログラムで共有できるソースユニットを作ることが出来たら便利だと思っていますが、そんなことは可能でしょうか? 今三つのプログラム(A.exe、B.exe、C.exe)があるとします。 これらのプログラムの一部には、全く同じ処理があります。 それを関数Zf()とします。 で、Z.cppというユニットにこの関数を記述し、三つのプロジェクトで共有するのです。 この関数は仕様が完全に決まってはおらず、試行錯誤しながら決めて行くことになっています。 修正が多発するのですが、Z.cppを一つ修正すれば、再コンパイルだけで反映するので便利だ、という考えです。 私の知識では、一つのプロジェクトに新たなソースユニットを作る場合、そのユニットでは、呼ぶ側のヘッダーをincludeする必要があります。 今回の場合は、Z.cppは三つのプロジェクトに登録するわけですから、三つのヘッダーをincludeすることになってしまいます。 A.hとB.hを見ると同じ名前の変数や関数があり、これを同時にincludeするとマズイ事になりそうな気がします。 呼ぶ側のヘッダーをincludeせずに共有することは可能なのでしょうか? ちなみに関数Zf()では、グローバル変数は使っていませんし、他のユーザ関数を呼ぶこともありません。 シロートの質問ですがよろしくお願いします。

  • 構文エラーについて教えてください

    申し訳ありません、初心者なので教えてください。 VC2005を使ってプログラミングをしております。 エラーは、以下のようになっております。 見づらいと思いますが、ご親切な方、よろしくお願いします。 申し訳ありません、初心者なので教えてください。 VC2005を使ってプログラミングをしております。 エラーは、以下のようになっております。 見づらいと思いますが、ご親切な方、よろしくお願いします。 c:\program files\microsoft platform sdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\dxlib.h(1529) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(6) : error C3872: '0x3000': この文字を識別子で使用することはできません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C3872: '0x3000': この文字を識別子で使用することはできません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C3872: '0x3000': この文字を識別子で使用することはできません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(8) : error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(8) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ブラウザ情報ファイルを作成しています... Microsoft Browse Information Maintenance Utility Version 8.00.50727 Copyright (C) Microsoft Corporation. All rights reserved. ビルドログは "file://c:\Documents and Settings\yu-ki-pippi\デスクトップ\DxLib_VC\サンプルプログラム実行用フォルダ\Debug\BuildLog.htm" に保存されました。 DxLib - エラー 7、警告 2 #include "Dxlib.h" struct CharaData{ int x; //左上座標 int y; int ghandle; //画像ハンドル int life;   //ライフ int image_w; //イメージの大きさ int image_h; int bounds_w; //判定領域の大きさ int bounds_h; }; *エラーをクリックするとこの部分でエラーが出てしまいます。

このQ&Aのポイント
  • Mac book airとroland sp-404mkiiをUSBハブ経由で接続することは可能か?
  • USBハブを使用してMacとroland sp-404mkiiを接続する方法を教えてほしい。
  • roland sp-404mkiiをMacに直接接続する方法とUSBハブ経由で接続する方法の音質の違いについて知りたい。
回答を見る