Re: LNK2019: unresolved external symbol "__declspec(dllimport)
Ed Dana wrote:
OK, as a C++ newbie, can someone tell me why this program:
========================================
#include <iostream>
using namespace std;
int Test(int argc, char *argv[]) {
std::cout << "'Sup, Holmes?";
return 0;
}
========================================
Two things, both shouldn't matter though:
- You need <ostream>, too, in order to use std::ostreams like std::cout.
- The using declaration is useless when you qualify 'cout' with 'std::'.
generates this error:
========================================
Error 1 error LNK2019: unresolved external symbol "__declspec(dllimport)
class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl
std::operator<<<char,struct std::char_traits<char> >(class
std::basic_ostream<char,struct std::char_traits<char> > &,char const *)"
(__imp_??$?6DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU
?$char_traits@D@std@@@0@AAV10@PBD@Z)
referenced in function _main main.obj
========================================
Let's decode this:
1. Remove the parts that just concern the calling conventions:
| class std::basic_ostream<char,struct std::char_traits<char> > &
| std::operator<<<char,struct std::char_traits<char> >(class
| std::basic_ostream<char,struct std::char_traits<char> > &,char const *)
2. Remove the 'class', 'struct' and 'std::' parts:
| basic_ostream<char,char_traits<char> > &
| operator<< <char,char_traits<char> >(
| basic_ostream<char,char_traits<char> > &,char const *)
3. "basic_ostream<char, char_traits<char> >" is simply "ostream"
| ostream&
| operator<< <char,char_traits<char> >(
| ostream&,
| char const *)
IOW, this is just the normal insertion operator. I guess that it is defined
as inline in <ostream>, which you didn't include.
I assume it's a compiler setting, but as I'm unfamiliar with this aspect
of C++, I haven't a clue as to where to look.
Other than the above, it would be best if you told us which
compiler/environment you are using. In any environment, this code should
work if you throw it into a wizard-generated C++ project, you would
normally have to take some efforts to make it fail...
Uli