Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1664
  • Last Modified:

Linker Error - undefined reference to std::wcout

I am using g++ and mingw library to compile and link my code. It is compiling fine but when I tried to link the code it is giving me n number of linking error....  most of the linking error is due to wchar_t.... i.e. widechar related...

I have linked my program with -lstdc++. Do I need to include some other library for linking?

some errors...
undefined reference to `std::basic_string<wchar_t, .....
undefined reference to `std::wcout`
undefined reference to `std::basic_ostream<wchar_t, .....
0
dennis_george
Asked:
dennis_george
  • 6
  • 3
  • 3
  • +3
5 Solutions
 
jkrCommented:
Are you using

#define UNICODE

at the top of your 'includes'?
0
 
dennis_georgeAuthor Commented:
Yes UNICODE is given as the compiler option
0
 
dennis_georgeAuthor Commented:
Earlier it was giving my compilation error.... because in the header file wchar_t was defined under _GLIBCXX_USE_WCHAR_T.... When I gave this also as commandline option then the compile time error went but I got those linker errors.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
compfixer101Commented:
could you give us the code for it, all of it that is, so we can see what it is all doing..
I use MS visio studio myself...
0
 
dennis_georgeAuthor Commented:
Code is as calling wcout.

Following is my compiler option
g++ -D_UNICODE -D_GLIBCXX_USE_WCHAR_T -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ..\main.cpp

This gave no error or warning creating main.o object file.

During linking... i.e.
g++ -oTest.exe main.o -lstdc++

I am getting following error....
 undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)'
H:/common/generic/security/swi/sistools/source/TestE/Debug/../main.cpp:10: undefined reference to `std::wcout'

gcc version used
gcc version 3.4.5 (mingw-vista special r3)

int main()
	{
	wstring str(L"hello");
	wcout << str << endl;
	wcout << L"Hello World :: " << endl;
	return 0;
	}

Open in new window

0
 
compfixer101Commented:
yeah, i never used that program, and i always just used cout not wcout
0
 
evilrixSenior Software Engineer (Avast)Commented:
Re your example http:#21819628 You need to include the headers <iostream> and <string> and ensure you either prefix a std:: or have a using namespace std;
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
	wstring str(L"hello");
	wcout << str << endl;
	wcout << L"Hello World :: " << endl;
	return 0;
}

Open in new window

0
 
dennis_georgeAuthor Commented:
The includes are proper and I am have the namespace statement in my code... That is just a portion of my code which gives error..

And if those things were missing I won't get linker error but compile time error.
0
 
evilrixSenior Software Engineer (Avast)Commented:
>> And if those things were missing I won't get linker error but compile time error
Just making sure we are all playing on the same field :)

Have you tried not explicitly providing a C++ runtime to link against...

g++ -o Test.exe main.o

Also have you tried skipping the object stage and compiling/linking in one go?

g++ main.cpp -o Test.exe

I presume it works fine if you use narrow streams/strings?
0
 
dennis_georgeAuthor Commented:
>Have you tried not explicitly providing a C++ runtime to link against...
yes I tried that also.....

More Info:
I am working on Mingw(5.1.4) library. And narrow streams and strings are working fine.... I also need to provide _UNICODE and _GLIBCXX_USE_WCHAR_T to get it compiled.
I think the mingw 5.1.4 does not have wide char support.. That may be the reason that it is missing frm the C++ runtime.
Now trying stlport to fix the issue... But it has its own set of problems :(

0
 
evilrixSenior Software Engineer (Avast)Commented:
>> I think the mingw 5.1.4 does not have wide char support.. That may be the reason that it is missing frm the C++ runtime.

I've not used it but during my involvement in another Q another expert confirmed that wide stream support is limited.

{http:Q_23487899.html#21794270}
0
 
sleep_pilotCommented:
Why don't you use the native C++RT provided with g++?
0
 
compfixer101Commented:
if possible try another compiler program.
to rule out the support issue of the widechar support
0
 
rstaveleyCommented:
According to http://www.mingw.org/MinGWiki/index.php/wide%20characters you need to use STLPort instead of libstdc++. Looks like hard work to me. Do you really need wide characters and really need mingw?
0
 
dennis_georgeAuthor Commented:
Yes I want wide char support and on mingw.... Afer some efforts with STLPort the errors are gone.... Now its working fine.....  

Thanks everybody....
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 6
  • 3
  • 3
  • +3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now