все, мой первый пост здесь, если мой стиль раздражает ваш, пожалуйста, дайте мне знать. Я ищу, чтобы узнать, как публиковать здесь. Я надеюсь, что кто-то может помочь мне с этим LNK2019
ОшибкаНеразрешенная ошибка символа extern, работает только при определении функции в заголовке
я получил два исходных файлов, battleship.cpp и tester.cpp, функция main()
внутри Leetcode.cpp программа не будет компилировать и дают ошибку LNK1120
и LNK2019
время, если я ставлю определение функции Solution
класса в файле заголовка battleship.h
программа на самом деле компиляции (и до сих пор работает хорошо для прототипа) - до сих пор, я не уверен, если это хороший пр actice, поскольку эти функции не являются шаблонными функциями, и я не могу оправдать положить их в файле .h
Сообщение об ошибке:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: int __thiscall tom::Solution::boardPrinter(class std::vector<class std::vector<char,class std::allocator<char> >,class std::allocator<class std::vector<char,class std::allocator<char> > > > &)" ([email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected][email protected][email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@@Z) referenced in function "int __cdecl tom::battleshipTester(void)" ([email protected]@@YAHXZ) Leetcode C:\Users\Shin\documents\visual studio 2015\Projects\Leetcode\Leetcode\tester.obj 1
и код для battleship.cpp
#include "stdafx.h"
namespace tom{
class Solution{
public:
int countBattleships(std::vector<std::vector<char>>& board) {
return 0;
}
int boardPrinter(std::vector<std::vector<char>>& board)
{
return 0;
}
int Solution::simpleBoardBuilder(std::vector<std::vector<char>>& board)
{
return 0;
}
};
}
и код для battleship.h
#pragma once
#include "stdafx.h"
namespace tom {
class Solution {
public:
int countBattleships(std::vector<std::vector<char>>& board);
int boardPrinter(std::vector<std::vector<char>>& board);
int simpleBoardBuilder(std::vector<std::vector<char>>& board);
};
}
код tester.cpp
#include "stdafx.h"
#include "battleship.h"
namespace tom {
int battleshipTester(void)
{
//called in main function
//call countBattleships
std::vector<std::vector<char>> board;
Solution baseline;
baseline.countBattleships(board);
baseline.boardPrinter(board);
baseline.simpleBoardBuilder(board);
return 0;
}
}
код tester.h
#pragma once
#include "stdafx.h"
namespace tom {
int battleshipTester(void);
//int simple
}
код Leetcode.cppтакже, где основной функцией является
// Leetcode.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "tester.h"
int main()
{
tom::battleshipTester();
return 0;
}
Это неопределенное поведение. Файл заголовка определяет класс данного имени. Файл cpp определяет другой класс с тем же именем. –
Мне немного странно, что ваш 'battleship.cpp' не включает' battleship.h'. Не так ли? – WhozCraig
Проблемы с библиотечной библиотекой связаны с библиотеками, не связанными с проектом, связаны ли вы с библиотекой с проектом Leetcode.cpp? – Abhinav