
今、クライアント・サーバーのプログラムを作っているのですが、クライアントとサーバの間の通信を暗号化しようとしています。
開発環境はVisualStudio2010のMFCを使っています。
サーバとクライアントのプログラムとを同一のプロジェクトにして、サーバとクライアントの起動をオプションで切り分けています。
しかし暗号モジュールは一つのファイルなので、これをp1.cppとしましょう。
サーバのファイルをmain.cpp クライアントをsub.cpp として、main.cppの方で#include "p1.cpp"とやっても、クライアントのソースからは関数が参照できません。
例えば g++ main.cpp sub.cpp として、両方に同じ関数を書くと2重定義になります。
クライアントのsub.cpp にも同じようにインクルードしてやると、再定義されてるとリンクエラーが出ます。どうすれば同じ関数を同一プロジェクト内で共有(他のファイルから参照)させることができますでしょうか?
解決法をよろしくお願いします。
No.1ベストアンサー
- 回答日時:
普通は 関数のプロトタイプ宣言を集めたヘッダーファイルと その実装をするCPPファイルに分けて
関数を使う側ではヘッダーファイルのみをインクリュードします
暗号化関数が void angou(char* p1, char*p2) という格好ならば
--- p1.h
void angou(char* p1, char *p2);
としてきます
p1.cppもプロジェクトに参加させておきます
main.cppやsub.cpp、p1.cppの冒頭で
#include "p1.h"
として コンパイルします
これで
main.obj sub.obj p1.obj がコンパイル結果として得られます
この中で 関数angouの実態があるのは p1.objのみであり 重複リンクはされません
ありがとうございました。こんなに簡単にできるなんて・・・
今ちょっと大きなプログラム書いているので、基礎知識が無いです。自分で解決できるように勉強します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でヘッダファイルにグロー...
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
エラーメッセージの読み方につ...
-
エクセルVBAではRound...
-
Makefile作成時の拡張子.oとは?
-
親フォルダのIShellFolderイン...
-
C言語のコンパイルができません
-
不要な #include
-
VC6(MFC)でのシンプルなMakefil...
-
分子動力学計算ソフトtinkerの...
-
PRO*C コンパイルエラー
-
MO, PO, POT, ファイルの開き方...
-
セミコロンについて
-
外部シンボル "_main"は未解決です
-
クリティカルエラー Expressio...
-
Visual Studio .net ヘッダーフ...
-
【VC++6.0(MFC)】警告「LINK : ...
-
Oracle10g→11gコンパイル方法
-
プリコンパイルエラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
Makefile作成時の拡張子.oとは?
-
ILSpyで、デコンパイルできない。
-
1 つ以上の複数回定義されてい...
-
マクロ コンパイルがグレーバック
-
セミコロンについて
-
外部シンボル "_main"は未解決です
-
C++コンパイル時に『 C1083: in...
-
ビルドとリビルドの違いを教え...
-
コンパイルエラー:ユーザ定義...
-
「DeclareステートメントにPtrS...
-
戻り値について
-
pyc 編集 閲覧
-
PRO*C コンパイルエラー
-
【VC++6.0(MFC)】警告「LINK : ...
-
漢字のコメントをはずすとコン...
おすすめ情報