質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

6809閲覧

オブジェクトファイルのリンクとはどうすればいいのでしょうか

Rv4ofZQtcBA3zAg

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/04/25 08:09

編集2017/04/25 08:30

###前提・実現したいこと
関数の定義を別のファイルに記述し呼び出すということがしたいのですがうまくいきません
ソースファイルをコンパイルしてオブジェクトファイルができたのですがそのあとのオブジェクトファイル同士をリンクして
1つのプログラムを作成するという作業のやり方がわかりません

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード

C言語

1ここにご自身が実行したソースコードを書いてください 2```ヘッダファイル 3/*max関数の定義*/ 4int max(int x,int y); 5 6ソースファイル1 7/*max関数の定義*/ 8int max(int x,int y) 9{ 10 if(x>y) 11 return x; 12 else 13 return y; 14} 15 16ソースファイル2 17 18#include<stdio.h> 19#include"myfunc.h" 20 21int main(void) 22{ 23 int num1,num2,ans; 24 25 printf("1番目の整数を入力してください\n"); 26 scanf("%d",&num1); 27 28 printf("2番目の整数を入力してください\n"); 29 scanf("%d",&num2); 30 31 ans=max(num1,num2); 32 33 printf("最大値は%dです。\n",ans); 34 35 return 0; 36} 37 38 39 40 41###試したこと 42課題に対してアプローチしたことを記載してください 43 44###補足情報(言語/FW/ツール等のバージョンなど) 45メモ帳 46visual studio2012

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A.Ichi

2017/04/25 08:23

とりあえず、int max(int x.int y);は、”.” を ”,” に修正ですね。
Rv4ofZQtcBA3zAg

2017/04/25 08:31

ご指摘ありがとうございます 修正しました
guest

回答2

0

ベストアンサー

main.cpp、myfunc.cpp、myfunc.hの3つのファイルがあるとして、
スタートメニューにあるVC++のコマンドプロンプトから実行した場合は以下のような感じです。

例は2017のものですが2012でもたぶん同じだと思います。

cl main.cpp myfunc.cpp

これで2つのcppファイルのオブジェクトファイルが生成・リンクされ、a.exeが出来上がります。

********************************************************************** ** Visual Studio 2017 Developer Command Prompt v15.0.26403.7 ** Copyright (c) 2017 Microsoft Corporation ********************************************************************** [vcvarsall.bat] Environment initialized for: 'x64' C:\Users\*****\Desktop\test>cl main.cpp myfunc.cpp Microsoft(R) C/C++ Optimizing Compiler Version 19.10.25019 for x64 Copyright (C) Microsoft Corporation. All rights reserved. main.cpp myfunc.cpp コードを生成中... Microsoft (R) Incremental Linker Version 14.10.25019.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:main.exe main.obj myfunc.obj C:\Users\*****\Desktop\test>

ただ、複数のファイルがあるなら先に回答された方と同様に、素直にVCのIDEでソリューションを作って管理した方が良いと思います。

投稿2017/04/25 09:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rv4ofZQtcBA3zAg

2017/04/25 10:32

cl main.cpp myfunc.cpp←これでわかりました コンパイルを1つずつしていました まとめてコンパイルしたらうまくいきました ありがとうございました
guest

0

Visual Studioを使っているのであれば、プロジェクトファイル(ソリューションファイル)を作成すれば、ビルドすることでオブジェクトのリンクもやってくれます。

まずは、プロジェクトファイルの新規作成で、C/C++を選択してコンソールアプリの作成を選びましょう。プロジェクトを作成するフォルダーを決めたらそのまま次へを押していけば、プロジェクトとmain関数を含んだソースファイルを自動で作成してくれます。

投稿2017/04/25 09:38

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rv4ofZQtcBA3zAg

2017/04/25 10:30

ありがとうございます 解決しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問