お世話になっております。
下記のクラスのヘッダとソースファイルを含んだライブラリで
下記のように書く
LNK2019 未解決の外部シンボル
"public: double __cdecl Differential::ReturnDiffvalue(double,int,double)" (?ReturnDiffvalue@Differential@@QEAANNHN@Z) が関数 main で参照されました。 test C:\Users****\source\repos\test\DrawPixel.obj **
が発生しました。
Differential.h class Differential { public: double ReturnDiffvalue(const double num, int power, double var); };
Differential.cpp //単純な微分。numは定数、powerは累乗、varは変数 double Differential:: ReturnDiffvalue(const double num, int power, double var) { int i = 1; auto num2 = 0;//4x2乗の場合、4*2*x(1乗)になる。定数4をnum,2をnum2,指数1をexponent,変数xをvarとすると auto p = 0; num2 = power; int exponent = (power >= 1) ? power - 1 : 1; i = exponent; while (i != 0) { p = pow(var, exponent);//varのi乗 i--; } auto num3 = p; return num * num2*num3; }
test.cpp #include "Differential.h" Differential* d; int main() { d->ReturnDiffvalue(3, 2, 4); return 0; }
当該する実装部分をcppファイルではなく、下記のようにヘッダファイルに直接書くとコンパイルが通るのですが、
Differential.h #pragma once #include <cmath> class Differential { public: double ReturnDiffvalue(const double num, int power, double var); /* { int i = 1; auto num2=0; auto p = 0; num2 = power; int exponent = (power >= 1) ? power - 1 : 1; i = exponent; while (i != 0) { p=pow(var, exponent);//varのi乗 i--; } auto num3 = p; return num * num2*num3; }*/ }; OSはWindows10 Home(64bit) コンパイラはVS2017です。
回答3件
あなたの回答
tips
プレビュー