Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / Managed C++ / November 2005

Tip: Looking for answers? Try searching our database.

std::map<std::string, std::string> produces complie errors Managed C++ Class Library

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Maxwell - 22 Nov 2005 23:56 GMT
Hello,

I having having oodles of trouble using the std lib in my MC++ (VS.NET
2003) Class library. I figured out a simple sample to reproduce the
errors I am having. Create a MC++ (VS.NET 2003) class library and type
in the following code below:

#include <map>
#include<string>

using std::string;
using std::map;

using namespace System;
using namespace std;

namespace ManagedLib
{
    public __gc class Class1
    {
        public:
            Class1(){};
            ~Class1(){};

            void DoNativeHashMap()
            {
                std::map<std::string,std::string> x;
                return;
            }
    };
};

when I go to complie this I get the following errors:

Linking...
LINK : error LNK2020: unresolved token (0A000008) ??_7type_info@@6B@
LINK : error LNK2020: unresolved token (0A000009) _CxxThrowException
LINK : error LNK2020: unresolved token (0A00000A) exception.__ctor
LINK : error LNK2020: unresolved token (0A00000C) exception.__dtor
LINK : error LNK2020: unresolved token (0A00000E) delete
LINK : fatal error LNK1120: 5 unresolved externals

Ok so I figured this must have something to do with std::map because
when I just have std::string everything is beautiful.

So I add a reference to msvcrtd.lib (for debug config) and  msvcrt.lib
(for release config) thinking that would do the trick then the errors
go awy but I then get this warning (not error):

ibcpmtd.lib(xlock.obj) : warning LNK4210: .CRT section exists; there
may be unhandled static initializers or terminators

I looked on the msdn site and found something about Converting Managed
Extensions for C++ Projects from Pure Intermediate Language to Mixed
Mode ->

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmex/html/vcco
nConvertingManagedExtensionsForCProjectsFromPureIntermediateLanguageToMixedMode.
asp


I just can't imagine this is what one would have to do to use teh
std::map or std::set in a MC++ class library...

Can someonw confirm this...Please say it aint so :(

Help help would definitely be appretiated..

Regards

Max
Maxwell - 26 Nov 2005 00:01 GMT
Ok, So I did some additonal playing around after lookiing through that
MS article like 34 times while pulling my hair out :). I think i might
have answered my own question, but can anyone confirm this behavor?
Again I I am trying to do is us objects in the standard template lib no
fancy win32 API calls or AFX stuff, etc. Just stuff like std::list,
std::string, std::map, std::vector, etc. Everything complied and
"seems" to be running fine. I guess the only thing I did not do is add
the entry points song and dance and call some kind of ::intialize and
::terminate method as they described in the MS article.

I am a little worried (even though everything is working right now)
that because I didnt initialize the whatever static library variables
that CRT might require via ::intialize and ::terminate that I might run
into problems but figured since I am only trying to use the basic
std::string, std::map, etc type stuff that it shouldn't be a problem?

Anyway Here is what I did:

Went to the project properties pages ->Linker->Input:
1. Added __DllMainCRTStartup@12 to Force Symbol References
2. Added msvcrt.lib and msvcrtd.lib to Release and Debug configurations
respectively
3. Removed the nochkclr.obj
4. Add /noentry to the Additional Options field of the Command Line
page

Can Anyone confirm this or have they tried to access std::map in
managed c++ in vs.net2003?

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.