|
There is nothing better than a paper and ink bounded book to learn C or in that case any programming language. To start with C please use the The C Programming Language by Schaum Series and move onto The C Programming Language by Dennis Richie and Brian W Kerningham, Pearson Education Publication.
But if you still insist on online Sites, best would be to Google the keyword and choose the best site upto your understanding.
There are only two kinds of people who are really fascinating-people who know absolutely everything, and people who know absolutely nothing.
Oscar Wilde (1854-1900)
Regards...
Shouvik
|
|
|
|
|
what is the final goal behind this question please ?
const only means that the variable/object to which it is declared cannot be modified once initialized.
|
|
|
|
|
hello every one..
my question:
Is there any possibilty to create drawing area in VC++?
if possible means plz help me with code?..
thank u
vikram
|
|
|
|
|
Can you more explain,please?
|
|
|
|
|
Ya, You can draw in any area of you application using device context. You can also restrict the area of drawing.
Have a look over:
CPaintDC, CClientDC, CMetaFileDC and CDC.
Well, everything depends on where and in which kind of application you want to draw. Try to be specific what exactly you want.
|
|
|
|
|
vikramkarthik wrote: Is there any possibilty to create drawing area in VC++?
what type of drawing area are you looking for!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief
|
|
|
|
|
Hello,
I am porting an application form VC++ 6.0 to VC++ 2005. While building my application its showing error "Can't open .sbr file, no such file or directory". Can any body help me in this problem.
regards,
Yudhisthira
|
|
|
|
|
Try to rebuild the entire solution.
Regards,
Paresh.
|
|
|
|
|
Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
Regards,
Yudhisthira
|
|
|
|
|
Check compiler options:
Please refer here[^] for more information.
Regards,
Paresh.
|
|
|
|
|
Clean the build and rebuild it. sbr file is a source browser file needed to have the enlisting of the constituents of the build.
There are only two kinds of people who are really fascinating-people who know absolutely everything, and people who know absolutely nothing.
Oscar Wilde (1854-1900)
Regards...
Shouvik
|
|
|
|
|
Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
Regards,
Yudhisthira
|
|
|
|
|
yudhisthira wrote: I am porting an application form VC++ 6.0 to VC++ 2005. While building my application its showing error "Can't open .sbr file, no such file or directory". Can any body help me in this problem.
Clean the Solution and then perform build!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief
|
|
|
|
|
Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
Regards,
Yudhisthira
|
|
|
|
|
yudhisthira wrote: Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
are your .sln and other file readonly ? if yes/no delete release folder,debug folder and .clw,.ncb.aps files!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief
|
|
|
|
|
Here's a problem with static class member:
From DLL A - header:
<br />
class __declspec(dllexport) CLogEntry<br />
{<br />
public:<br />
...<br />
<br />
static CLog* GetSingletonLoggingProvider() { return s_pSingletonLoggingProvider; }<br />
...<br />
<br />
protected:<br />
...<br />
static CLog * s_pSingletonLoggingProvider;<br />
};<br />
.cpp file:
#include "stdafx.h"<br />
<br />
#include "LogEntry.h"<br />
<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL; << NOTE I need to actually "define" the global variable - that's fine. (so long I don't need to do it multiple times)<br />
<br />
CLogEntry::CLogEntry(int nId, nsCLog::eSeverity nSeverity, char* lpszCode, char* lpszMsg, DWORD dwWin32ErrorCode, CLogEntry * pParent)<br />
{<br />
...<br />
}<br />
... the rest of it...<br />
Now from DLL B (The second dll which is linked to "DLL A")
.cpp file (where CLogEntry is used)
<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL; <br />
<< I need to define this again?? That looks like redundant code to me but if I don't, I'd get the following error.
<br />
Linking...<br />
Creating library ..\..\bin/XXX.lib and object ..\..\bin/XXX.exp<br />
StdAfx.obj : error LNK2001: unresolved external symbol "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A)<br />
..\..\bin/XXX.exe : fatal error LNK1120: 1 unresolved externals
So I need to redefine (not "declare") the static member variable in each "Translation Unit"? (separate dll, exe?)
Thanks a bunch!
|
|
|
|
|
You can do something like this:
<font size="3">
<font color="Red">#ifdef _BUILDINGDLL
#define _MY_IMPORTEXPORT __declspec(dllexport);
#else
#define _MY_IMPORTEXPORT __declspec(dllimport);
#endif</font>
class <font color="Red">_MY_IMPORTEXPORT</font> CLogEntry
{
public:
...
static CLog* GetSingletonLoggingProvider() { return s_pSingletonLoggingProvider; }
...
protected:
...
static CLog * s_pSingletonLoggingProvider;
};
<font size="3">
#include "stdafx.h"
#include "LogEntry.h"
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL;
CLogEntry::CLogEntry(int nId, nsCLog::eSeverity nSeverity, char* lpszCode, char* lpszMsg, DWORD dwWin32ErrorCode, CLogEntry * pParent)
{
...
}
... the rest of it... Define _BUILDINGDLL (in the compiler preprocessor settings) when building DLL A.
Don't define it when building DLL B
Do NOT redefine s_pSingletonLoggingProvider in DLL B.
Instead use like any other static members (they are imported for external builds, exported when building DLL A):
CLog *pLog = CLogEntry::GetSingletonLoggingProvider();
Make sense?
Mark
Last modified: 2hrs 51mins after originally posted --
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thanks but if I don't guard
<br />
...<br />
class __declspec(dllexport) CLogEntry<br />
{<br />
public:<br />
...<br />
static CLog* GetSingletonLoggingProvider() { return s_pSingletonLoggingProvider; }<br />
<br />
...<br />
<br />
protected:<br />
...<br />
protected:<br />
...<br />
<br />
static CLog * s_pSingletonLoggingProvider;<br />
};<br />
<br />
<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL;<br />
#endif<br />
with #ifndef:
<br />
#ifndef _LOGSINGLETON_<br />
#define _LOGSINGLETON_<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL;<br />
then I'd get:
<br />
Linking...<br />
StartupManager.obj : error LNK2005: "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A) already defined in LogEntry.obj<br />
StartupManager.obj : error LNK2005: "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A) already defined in LogEntry.obj<br />
StartupManager.obj : warning LNK4006: "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A) already defined in LogEntry.obj; second definition ignored<br />
Creating library ..\bin\Utilities.lib and object ..\bin\Utilities.exp<br />
..\bin\Utilities.dll : fatal error LNK1169: one or more multiply defined symbols found<br />
Error executing link.exe.<br />
Should I just include it in ".cpp" instead?
|
|
|
|
|
That should have stayed in the CPP, yes. I'll hilight the sample code - I only added the stuff at the top.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Thanks very much this is execellent
There're a couple of things I do not understand however.
1. I understand "__declspec(dllexport)", but not sure why we need "__declspec(dllimport)"
2. I do understand precompile directive however:
<br />
#ifdef _BUILDINGDLL<br />
...<br />
#else<br />
...<br />
#endif<br />
Just not sure why when "Building DLL B" I need to "dllimport" (although I saw it in MSDN)... I don't remember I need to dllimport... just link in project settings and include header file was all I did.
|
|
|
|
|
For a true global variable/function you need ONE instance of it.
In your case it was in DLL A.
For other modules to be able to use the globals, you need to export it from
the DLL it exists in and import it in any module that uses it.
By using the preprocessor directives, you can keep the declaration in one header file
instead of two (one for export, one for import). Any changes to the class only have to
be made in one place.
This is how MFC is built, except there's a 3rd option, since MFC can also be built into a
static library.
By the way, you can also import/export individual static members of a class instead of
importing/exporting the entire class. Same method except you put the __declspec()
on the variable declaration instead of the class declaration.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Also, I already have the following by ClassWizard when setup the new project:
#ifdef UTILITIES_EXPORTS<br />
#define UTILITIES_API __declspec(dllexport)<br />
#else<br />
#define UTILITIES_API __declspec(dllimport)<br />
#endif<br />
Do I need to do this again for individual class?
devy
|
|
|
|
|
devvvy wrote: Do I need to do this again for individual class?
You can use the same UTILITIES_API macro on a class.
The point is to only export from one module, the module where the actual
static instance(s) exist. All other modules should import.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Thanks very much Mark, I been very needy
|
|
|
|
|
You're welcome!
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|