오류 LNK2019 : ___tmainCRTStartup 함수에서 참조 된 해결되지 않은 외부 기호 _main
문제가 무엇인지 모르겠습니다. 오류가있는 곳을 찾을 수 없습니다. 구현을 주석 처리해도 오류가 해결되지 않습니다.
헤더 파일
#ifndef MAIN_SAVITCH_SEQUENCE_H
#define MAIN_SAVITCH_SEQUENCE_H
#include <cstdlib> // Provides size_t
namespace main_savitch_3
{
class sequence
{
public:
// TYPEDEFS and MEMBER CONSTANTS
typedef double value_type;
typedef std::size_t size_type;
static const size_type CAPACITY = 30;
// CONSTRUCTOR
sequence( );
// MODIFICATION MEMBER FUNCTIONS
void start( );
void advance( );
void insert(const value_type& entry);
void attach(const value_type& entry);
void remove_current( );
// CONSTANT MEMBER FUNCTIONS
size_type size( ) const;
bool is_item( ) const;
value_type current( ) const;
private:
value_type data[CAPACITY];
size_type used;
size_type current_index;
};
}
#endif
출처
#include "sequence1.h"
#include <assert.h>
namespace main_savitch_3
{
// Default constructer - sequence is empty
sequence::sequence()
{
used = current_index = 0;
}
// Start the iteration
void sequence::start()
{
current_index = 0;
}
// Iterate
void sequence::advance()
{
current_index++;
}
// Number of items in the sequence
sequence::size_type sequence::size() const
{
return used;
}
// Checks if there is a current item
bool sequence::is_item() const
{
return current_index <= used && used > 0;
}
// Returns the current value
sequence::value_type sequence::current() const
{
assert(is_item()); // no current item
return data[current_index];
}
// Adds an item BEFORE the current index
void sequence::insert(const value_type& entry)
{
assert(entry != 0); // pointer is invalid
assert(current_index < sequence::CAPACITY); // no room to add an item
// move items up - starting with the last item and working down to the current item
// arrays start at 0, so the -1 adjusts it
for (size_type i = used - 1; i >= current_index; i--)
data[i + 1] = data[i];
data[current_index] = entry;
}
// Adds an item AFTER the current index
void sequence::attach(const value_type& entry)
{
assert(entry != 0); // pointer is invalid
assert(current_index < sequence::CAPACITY); // no room to add an item
// move items up - starting with the last item and working down to the current item
// arrays start at 0, so the -1 adjusts it
for (size_type i = used - 1; i > current_index; i--)
data[i + 1] = data[i];
if (current_index = 0)
data[used] = entry;
else
data[current_index + 1] = entry;
}
// Removes the current item
void sequence::remove_current()
{
for (size_type i = current_index; i < used; i++)
data[i] = data[i + 1];
}
}
프로젝트에 main()
메서드 가 있어도 링커가 때때로 혼란스러워집니다. Visual Studio 2010에서이 문제를 해결할 수 있습니다.
프로젝트-> 속성-> 구성 속성-> 링커-> 시스템
SubSystem
콘솔로 변경 합니다.
우리도이 문제가있었습니다. 동료가 해결책을 찾았습니다. 타사 라이브러리 헤더에서 "main"을 재정의 한 것으로 나타났습니다.
#define main SDL_main
그래서 해결책은 다음을 추가하는 것이 었습니다.
#undef main
우리의 주요 기능 전에.
이것은 분명히 어리 석음입니다!
_tmain
프로젝트에 기능이 있다면include <tchar.h>.
You need a main()
function so the program knows where to start.
In case someone missed the obvious; note that if you build a GUI application and use
"-subsystem:windows" in the link-args, the application entry is WinMain@16. Not main(). Hence you can use this snippet to call your main():
#include <stdlib.h>
#include <windows.h>
#ifdef __GNUC__
#define _stdcall __attribute__((stdcall))
#endif
int _stdcall
WinMain (struct HINSTANCE__ *hInstance,
struct HINSTANCE__ *hPrevInstance,
char *lpszCmdLine,
int nCmdShow)
{
return main (__argc, __argv);
}
Did you implement the main()
function?
int main(int argc, char **argv) {
... code ...
return 0;
}
[edit]
You have your main()
in another source file so you've probably forgotten to add it to your project.
To add an existing source file: In Solution Explorer, right-click the Source Files folder, point to Add, and then click Existing Item. Now select the source file containing the main()
If you are using Visual Studio. The reason you might be recieving this error may be because you originally created a new header file.h and then renamed it to file.cpp where you placed your main() function.
To fix the issue right click file.cpp -> click Properties go to
Configuration Properties -> General ->Item Type and change its value to C/C++ compiler instead of C/C++ header.
I had this problem despite:
- having a
main()
; and - configuring all other projects in my solution to be static libraries.
My eventual fix was the following:
- my
main()
was in a namespace, so was effectively calledsomething::main()
...removing this namespace fixed the problem.
I encountered the LNK2019 error while working on a DLL project in Visual Studio 2013.
I added a new configuration to the project. But instead of having the "Configuration Type" as "Dynamic Library", visual studio added it as "Application". This resulted in the LNK2019 error.
Fixed the LNK2019 error by going to Project -> Properties -> Configuration Properties -> General and changing "Configuration Type" to "Dynamic Library (.dll)" and "Target Extension" to ".dll".
Yes, the original question talks about a console/application project, which is a different problem than my answer. But I believe adding this answer might help someone (like me) that stumbles upon this thread.
You appear to have no main function, which is supposed to be the entry-point for your program.
go to "Project-Properties-Configuration Properties-Linker-input-Additional dependencies" then go to the end and type ";ws2_32.lib".
'Programing' 카테고리의 다른 글
ArrayAdapter에서 항목을 추가 / 제거 할 수없는 이유는 무엇입니까? (0) | 2020.12.14 |
---|---|
Git은 커밋 후에도 삭제 된 파일을 계속 표시합니다. (0) | 2020.12.14 |
Maven : Maven 실행시 zip 파일 열기 오류 (0) | 2020.12.14 |
AndroidStudio Gradle 프록시 (0) | 2020.12.14 |
개발 목적으로 iOS 7의 NSURLSession 및 위임 메서드 제품군을 사용하여 자체 서명 된 SSL 인증서를 수락하려면 어떻게해야합니까? (0) | 2020.12.14 |