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

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

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

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

637閲覧

LNK2019について

Y.R.T

総合スコア42

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/15 04:17

Visual Studio2019でC++のSourceをコンパイルしよとしています。 LNK2019のエラーが発生し、 『 Date@@QAE@XZが関数mainで参照されました。   未解決の外部シンボル"public" _thsicall Date::Date 』 と出力されています。 何かライブラリが足りないのでしょうか? また足りないのであれば何を参照できるようにすればよいのでしょうか? 何卒、ご回答をよろしくお願いいたします。

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

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

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

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

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

yohhoy

2020/05/15 04:24 編集

Date というクラス名に心当たりはありませんか? エラーメッセージは「Dateクラスのコンストラクタ定義が見つからない」と言っているようです。宣言だけは存在するのでコンパイルフェーズは問題ないが、定義が存在しないためリンク時エラー(LNK2019)となります。
Y.R.T

2020/05/15 05:28

ご回答ありがとうございます。 以下の二つの構文を読み込んでいます。 これでは足らないといううことでしょうか? --------------------------------------------------- /******Datetest2.cpp*******/ #include <iostream> #include "test50.h" using namespace std; int main() { const Date birthday(1963, 1, 18); Date day[3]; cout << "birthday = " << birthday << '\n'; cout << "birthdayの文字列表現 :\" " << birthday.to_string() << "\"\n"; for (int i = 0; i < 3; i++) cout << "day[" << i << "]の文字列表現:\" << day[i].to_string() << "\"\n"; } ーーーーーーーーーーーーーーーーーーーーーーーーーーーー /****test50.h****/ #ifndef ___Class_Date #define ___Class_Date #include <iostream> class Date { int y; int m; int d; public: Date(); Date(int yy, int mm = 1, int dd = 1); int year() const { return y; } int month() const { return m; } int day() const { return d; } Date precending_day() const; std::string to_string() const; int day_of_week() const; }; std::ostream& operator<<(std::ostream& s, const Date& x); std::istream& operator>>(std::istream& s, Date& x); #endif
Y.R.T

2020/05/15 05:33

すみません。 原因がわかりました。 関数定義のファイルが読み込めていないようです。 申し訳ございません。 ありがとうございます。
Y.R.T

2020/05/15 06:21 編集

ファイルを以下に書き換えてコンパイルしたら、 ひとつだけエラーが消えないです。 エラー内容は安全でないと警告しているようですが、 何がダメなのでしょうか? エラー箇所は、  struct tm* local = localtime(&current); の部分のようです。 何卒、ご回答のほど宜しくお願いいたします。 エラー内容は下記です。 エラー C4996 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Datetest2.cpp 12 ------------------------------------------------------------------------------ #include <ctime> #include <sstream> #include <iostream> #include "test50.h" using namespace std; Date::Date() { time_t current = time(NULL); struct tm* local = localtime(&current); y = local->tm_year + 1900; m = local->tm_mon + 1; d = local->tm_mday; } Date::Date(int yy, int mm, int dd) { y = yy; m = mm; d = dd; } string Date::to_string() const { ostringstream s; s << y << "年" << m << "月" << d << "日"; return s.str(); } int main() { const Date birthday(1963, 1, 18); Date day[3]; cout << "birthday = " << birthday << '\n'; cout << "birthdayの文字列表現 :\" " << birthday.to_string() << "\"\n"; for (int i = 0; i < 3; i++) cout << "day[" << i << "]の文字列表現:\"" << day[i].to_string() << "\"\n"; }
KoichiSugiyama

2020/05/15 07:51

あまりコメント欄にソースを貼り付けると、見づらいので回答が付きにくくなると思います。質問の本文にマークダウンを使って追記されたほうが良いです。 ちなみにエラーの内容は読まれましたか?翻訳サイトなどで機械翻訳するだけでもかなり意味が読み取れる日本語になります。一度利用されてみることをお勧めします。
SHOMI

2020/05/16 17:52

エラーメッセージに書かれている通りです。 localtime_sを使ったコードに書き換えるか、 includeより前で_CRT_SECURE_NO_WARNINGSをdefineするか、 プロジェクトのプロパティページで"C/C++"-"プリプロセッサ"-"プリプロセッサの定義"に_CRT_SECURE_NO_WARNINGSを追加すれば出なくなります。
yumetodo

2020/05/17 06:04

というか本筋のリンクエラーはすでに解決済みのようなので質問を閉じてください。
Y.R.T

2020/05/17 23:47

お忙しい中、ご回答ありがとうございます。
yumetodo

2020/05/18 09:56

解決済にしてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問