今、クライアント・サーバーのプログラムを作っているのですが、クライアントとサーバの間の通信を暗号化しようとしています。
開発環境は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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- ノートパソコン ESETの初期インストールの仕方 1 2022/10/14 08:26
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- サーバー Webサイト構築フリーランスの案件受注について 1 2022/03/27 18:16
- PHP PHP でメールフォームを作成したい 1 2022/05/04 22:28
- ネットワーク 社内ネットワークの1台だけ接続できないときがある 4 2023/01/25 11:58
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
<math.h>があるのにsqrtが・...
-
C言語でヘッダファイルにグロー...
-
1 つ以上の複数回定義されてい...
-
VBAを何回も作り直して、容量が...
-
LNK1210が出て困っています。
-
「fatal error C1189」を回避す...
-
【VC++6.0(MFC)】警告「LINK : ...
-
コンパイルエラー
-
PrintWindowの使用方法
-
エクセルVBAではRound...
-
戻り値について
-
動的な変数名のつけ方について
-
外部シンボル "_main"は未解決です
-
PICの__CONFIGのラインについて
-
ExcelVBAで『ByRef 引数の型が...
-
GetStockObject()で未定義エラ...
-
CImageクラスの使用について
-
複数ファイルから同じ関数の呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
Makefile作成時の拡張子.oとは?
-
C言語でヘッダファイルにグロー...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
エクセルVBAではRound...
-
<math.h>があるのにsqrtが・...
-
ILSpyで、デコンパイルできない。
-
セミコロンについて
-
外部シンボル "_main"は未解決です
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
コンパイルエラー:ユーザ定義...
-
クリティカルエラー Expressio...
-
【VC++6.0(MFC)】警告「LINK : ...
-
定数式とはどういう意味でしょ...
-
ビルドとリビルドの違いを教え...
-
C++コンパイル時に『 C1083: in...
-
戻り値について
おすすめ情報