|
try on
WM_ERASEBKGND
Regards,
FarPointer
Blog:http://farpointer.blogspot.com/
|
|
|
|
|
this is the error:
error LNK2001: unresolved external symbol "class std::basic_string<c...
This is what I have at the top of the cpp file:
#include <string>
using std::
At this point VS gives me a short list that doesn't look like the string class. It shows:
_Bool_allocator
_Vbase
_VBITS
vector
Vector <class_Bool, class alocator<_Vbase>
Any idea on why I'm not getting the right class?
Thanks,
Jim
|
|
|
|
|
Should it be:
using namespace std;
- It's easier to make than to correct a mistake.
|
|
|
|
|
I still get the same error when I use this...
|
|
|
|
|
It usually has something to do with linked libraries.
What compiler are you using?
What runtime library settings are you using?
Have you tried a Rebuild All?
- It's easier to make than to correct a mistake.
|
|
|
|
|
I have rebuilt everything many times.
I'm using ../vc98/lib and ../vc98/mfc/lib
I'm compliling with Visual C++ 6.0
Thanks for the help, I'm really lost on how to debug this..
Jim
|
|
|
|
|
I mean what C/C++ run-time libraries you are linking.
Could you add "msvcprt.lib" to the additional libraries?
- It's easier to make than to correct a mistake.
|
|
|
|
|
msvcprt.lit wasn't in the additional libraries so I added it and re-compiled everything and still received the same errors.
this is the whole error, it may help:
error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl GetConfiguredClientTypes(class std::vector<class std::basic_string<char,struct std::char_traits<
char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > *)" (?GetConfiguredClientTypes@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAV
?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@@Z)
thanks again!
|
|
|
|
|
Could you check two things:
1) Whick one of the following appears in your linker settings:
/ML
/MT
/MD
/MLd
/MTd
/MDd
Let me know if more than one are being used.
2) Does your app load any other modules (DLLs)?
- It's easier to make than to correct a mistake.
|
|
|
|
|
/MLd is the only one I saw in there.
The app does load 1 DLL*****I take that back, it doesn't link to a dll
-- modified at 13:32 Thursday 15th June, 2006
|
|
|
|
|
If you've set /nodefaultlibs, try to scrap it.
- It's easier to make than to correct a mistake.
|
|
|
|
|
|
Anybody else have any ideas on where to go from here?
It really seems like the info from <string> is getting stepped on or something.
Help I'm totally stuck!!
Thanks,
Jim
|
|
|
|
|
Would it make a difference that I have both C & CPP files in this project?
|
|
|
|
|
My class h file is
class CScale : public CStatic
{
public:
CScale();
public:
public:
public:
protected:
protected:
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
public:
CFont m_font;
COLORREF *BC, BGC;
protected:
afx_msg BOOL OnPaint(CDC* pDC);
DECLARE_MESSAGE_MAP()
};
I have all the function bodies in the cpp file.
When I compile I get:
GraphCtrl.obj : error LNK2001: unresolved external symbol "protected: virtual struct AFX_MSGMAP const * __thiscall CScale::GetMessageMap(void)const " (?GetMessageMap@CScale@@MBEPBUAFX_MSGMAP@@XZ)
Release/RunCadMFCDLL.dll : fatal error LNK1120: 1 unresolved externals
thanks for helping,
sb
|
|
|
|
|
Do you have BEGIN_MESSAGE_MAP() in your class' .cpp file?
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Duh!
I made the cpp file from scratch (the class wizard didn't make it), and I did not even think about the message map section needing to be in there (though I know its always there. thanks to both of you - you diagnosed it right away
sb
|
|
|
|
|
It seems that for your CScale control there is no corresponding BEGIN_MESSAGE_MAP /END_MESSAGE_MAP zone (created by Class Wizard) in CPP file.
Open the CPP file where the implementation of CScale class is provided, and check if there is a BEGIN_MESSAGE_MAP and END_MESSAGE_MAP macros here, something like this:
BEGIN_MESSAGE_MAP(CScale, CStatic)
END_MESSAGE_MAP()
In addition, check if your CPP file is included in the project, i.e. is listed in the Solution Explorer panel, and is not excluded from build process.
Hope it helps.
|
|
|
|
|
What the others have said, and also, if you want ClassWizard to work correctly, you need to make all this stuff match ...
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGraphCtrl)
should be
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CScale)
Be careful what you cut and paste - don't forget the edit!
I've seen better runs in my shorts! - Patches O'Houlihan
|
|
|
|
|
When I declare a member static in a class, it throws a linker error stating it's an unresolved external symbol..
Error Message:
<br />
CTimp error LNK2001: unresolved external symbol "public: static char * CAvCT::m_szApplicationName" (?m_szApplicationName@CAvCT@@2PADA)<br />
When I make it non-static, it works fine. Why is that so??
Please help.
The member is declared public. i.e :
<br />
public:<br />
static int x;<br />
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[ ]--
[My Current Status]
|
|
|
|
|
you still need to define the variable:
foo.h
CFoo
{
public:
static int blah;
};
foo.cpp
#include "foo.h"
int CFoo::blah = 0;
|
|
|
|
|
Chris now a different version of it.
But is it not obvious that you are declaring it again ? in the .cpp file?
<br />
AvCT.cpp(16): error C2086: 'int CAvCT::xxx' : redefinition<br />
<br />
AvCT.cpp(16): error C2655: 'CAvCT::xxx' : definition or redeclaration illegal in current scope<br />
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[ ]--
[My Current Status]
|
|
|
|
|
The difference between a static and a non-static variable is that the static variable will be shared among all instances of the class (so, it doesn't belong to a specific instance). Because of that, declaring it inside the class is not sufficient, you need to define it outside in the cpp file. If you try to do the same with a non-static variable, you'll get an error because declaring the variable in the class is sufficient.
Cédric Moonen
Software developer
Charting control
|
|
|
|
|
VuNic wrote: But is it not obvious that you are declaring it again ? in the .cpp file?
since i can't see your code, i don't know what you're doing here and can't explain the error (did you remove the "static" in your .H?).
but, static member variables require both parts: the declaration and the definition (as my first reply and all the other replies to your question show) . without the .CPP part, your variable has no space allocated for it - since it's not part of a class instance, you have to give it a place to live outside the class.
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
Got it! thanks chris!
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[ ]--
[My Current Status]
|
|
|
|