我有,指出每個函數的聲明頭文件:實際的功能在這裏C++ LNK2019當包括頭
#ifndef TYPECONVERTER_H_INCLUDED
#define TYPECONVERTER_H_INCLUDED
#include <iostream>
#include <string>
#include <vector>
#include <Windows.h>
using namespace std;
unsigned int letter2number(char input);
char number2letter(unsigned int input);
string chararr2string(char *input);
string char2string(char input);
char string2char(string input);
char *string2chararr(string input);
string int2string(int input);
int string2int(string input);
wstring string2wstring(const std::string& input);
LPSTR string2lpstr(string input);
vector<int> intarr2intvector(int input[]);
int *vectorint2intarr(vector<int> input);
vector<string> strarr2vectorstr(string *input);
string *vectorstr2strarr(vector<string> input);
vector<char> chararr2vectorchar(char *input);
char *chararr2vector(vector<char> input);
string wchar2string(WCHAR wc[260]);
#endif
然後.cpp文件:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <Windows.h>
#include "TypeConverter.h"
using namespace std;
unsigned int letter2number(char input)
{
if(input >= 'A' && input <= 'Z')
return input - 64;
else if(input >= 'a' && input <= 'z')
return input - 96;
return 0;
}
char number2letter(unsigned int input)
{
if(input >= 1 && input <= 26)
return input + 96;
return 'a';
}
string chararr2string(char *input)
{
string ret(input);
return ret;
}
string char2string(char input)
{
string ret = "";
ret += input;
return ret;
}
char string2char(string input)
{
return input[0];
}
char *string2chararr(string input)
{
char *ret=new char[input.size()+1];
ret[input.size()]=0;
memcpy(ret,input.c_str(),input.size());
return ret;
}
string int2string(int input)
{
return std::to_string(input);
}
int string2int(string input)
{
try{
stoi(input);
return stoi(input);
}
catch(std::invalid_argument){
return 1;
}
}
wstring string2wstring(const std::string& input)
{
std::wstring ret = std::wstring(input.begin(), input.end());
return ret;
}
LPSTR string2lpstr(string input)
{
return const_cast<char *>(input.c_str());
}
vector<int> intarr2intvector(int input[])
{
std::vector<int> ret(input, input + sizeof input/sizeof input[0]);
return ret;
}
int *vectorint2intarr(vector<int> input)
{
int *ret = &input[0];
return ret;
}
vector<string> strarr2vectorstr(string *input)
{
std::vector<string> ret(input, input + sizeof input/sizeof input[0]);
return ret;
}
string *vectorstr2strarr(vector<string> input)
{
string *ret = &input[0];
return ret;
}
vector<char> chararr2vectorchar(char *input)
{
std::vector<char> ret(input, input + sizeof input/sizeof input[0]);
return ret;
}
char *chararr2vector(vector<char> input)
{
char *ret = &input[0];
return ret;
}
string wchar2string(WCHAR wc[260])
{
char ch[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP,0,wc,-1, ch,260,&DefChar, NULL);
std::string ss(ch);
return ss;
}
當我使用:
#include "stdafx.h"
#include <iostream>
#include <string>
#include "TypeConverter.h"
using namespace std;
int main()
{
cout << int2string(2) << endl;
}
,如果它在這兩個文件是在創建的項目它工作得很好但是,當我嘗試這樣做。在包含「TypeConverter.h」的另一個程序中也是這樣,它給了我一個LNK2019「無法解析的外部符號」錯誤。我究竟做錯了什麼?
複製[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external -symbol-error-and-how-do-i-fix) –