これは以前に尋ねられたかもしれませんが、クラスのコンテキストでのみ見つけましたが、そうではありません。
Utils.h
#ifndef _UTILS_H_
#define _UTILS_H_
#include <cmath>
//is 'x' prime?
bool isPrime(long long int x);
//find the number of divisors of 'x' (including 1 and x)
int numOfDivisors(long long int x);
#endif //_UTILS_H_
Utils.cpp
#include "Utils.h"
bool isPrime(long long int x){
if (x < 2){
return false;
}
long double rootOfX = sqrt( x );
long long int flooredRoot = (long long int)floor ( rootOfX );
for (long long int i = 2; i <= flooredRoot; i++){
if (x % i == 0){
return false;
}
}
return true;
}
int numOfDivisors(long long int x){
if (x == 1){
return 1;
}
long long int maxDivisor = (x / 2) + 1;
int divisorsCount = 0;
for (long long int i = 2; i<=maxDivisor; i++){
if (x % i == 0){
divisorsCount++;
}
}
divisorsCount += 2; //for 1 & x itself
return divisorsCount;
}
これら 2 つのファイルは、Visual Studio 2012 でデバッグ モードでスタティック ライブラリとしてコンパイルされています。ここで、これらを別のプロジェクトで使用してみます。それを MainProject と呼びましょう
。 1. 「Utils.vcproj」を MainProject ソリューションに追加します。
2. MainProject を Utils に依存するようにし
ます
Utils を使用するメインは次のとおりです。
#include <iostream>
#include "..\Utils\Utils.h"
using namespace std;
int main(){
cout << "num of divisors of " << 28 << ": " << numOfDivisors(28) << endl;
//this part is merely to stop visual studio and look at the output
char x;
cin >> x;
return 0;
}
そして、これは私が得るエラーです:
Error 1 error LNK2019: unresolved external symbol "int __cdecl numOfDivisors(__int64)" (?numOfDivisors@@YAH_J@Z) referenced in function _main G:\ProjectEuler\Problem12\Source.obj Problem12
「numOfDivisors」を実装するコードが見つからないのはなぜですか? さらに、それを含む.libを与えました-Utilsプロジェクト自体に依存関係を置きます...どんな助けでも大歓迎です。