|
George_George wrote: But it can compile without any issues in Visual Studio 2008, without any warnings and even if I select disable language extensions to yes.
I tried VC++ 2005, and got the same result as you did.
I think we should double-check the ISO doc ...
Maxwell Chen
|
|
|
|
|
Thanks for your virification, Maxwell!
It is interesting question. I will start a new thread.
regards,
George
|
|
|
|
|
What this function cl_login does in MFC?
|
|
|
|
|
Nikesh Jagtap wrote: cl_login
I don't know what version of MFC you have, but there's no "cl_login"
in MFC 9.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
you asked this yesterday[^] already. do you only read the answers ?
and what do you think we are ?
can't you just make a simple google or MSDN Search ?
modified on Friday, March 7, 2008 4:49 AM
|
|
|
|
|
"... is missing debugging information for referencing module; linking object as if no debug info."
Here's what I'm doing:
1) I have a third-party library that I am building as a separate solution. It generates .lib and .pdb files.
2) I have a library that I've written that I use in all my solutions. So, logically, I should be able to take the third-party .lib and .pdb files and add the .lib to my .lib's dependency chain (Properties->Librarian->General->Additional Dependencies) and build and everything should be okay.
But it isn't. For whatever reason, despite specifically generating a unique name for the .pdb file for the third-party .lib, I still get LNK4204 warnings.
Is there a way to get the linker or librarian to include the contents of another .pdb file into another executable/library .pdb file?
|
|
|
|
|
Does the third party lib uses default pdb file name.
|
|
|
|
|
From my original message, "despite specifically generating a unique name for the .pdb file for the third-party .lib, I still get LNK4204 warnings"
If it were that simple I wouldn't be asking.
|
|
|
|
|
Hi,
Can you please let me know how to do the following?
I have a console exe that does something. I call this exe from Dialog based MFC app. I want to add this console exe into MFC resource and then use it in the MFC app. Can this be done? My idea here is to have only one exe instead of two .
Thanks in advance
Vikas
|
|
|
|
|
|
don't reply to some when
1) you didn't read his question
2) you didn't understand his question
3) you don't know the topic
4) you don't know how to solve it
you post is damn useless
|
|
|
|
|
He wants to insert exe in his resource not run an exe file.
|
|
|
|
|
Add it as a custom resource, let's say "BIN" resource. Then use FindResource and LoadResource to access it. I guess you plan to run it, then dump it as a temp file and run it.
I have used similar technique with driver and it works like a charm.
God bless,
Ernest Laurentin
|
|
|
|
|
|
|
It's not supposed to.
If it is showing a hidden window, then it must be true.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I have an app which will have a lot of controls on it, and will probably make it a dialog based app for easy layout of these controls. Are there any limitations/problems of making it dialog-based instead of normal window-based ?
What are the rules on when an app should be dialog-based and when it should be a normal window-based ?
Can a dialog based app have a menu bar and toolbar ?
|
|
|
|
|
Defenestration wrote: What are the rules on when an app should be dialog-based and when it should be a normal window-based ?
I don't know about the rules, but it can be a lot easier to layout many controls
on a dialog resource than it is to create them manually at runtime for a window.
Defenestration wrote: Can a dialog based app have a menu bar and toolbar ?
Yes The menu you can add to the dialog resource.
For toolbars, you can do it manually... for one example, see
DLGCBR32 Sample: Demonstrates Adding a Status Bar and Toolbar to Dialog Boxes[^]
If you use MFC, IMO the easiest method is to use a frame window for the main window and use
a modeless dialog as the client window (or you could even use a CFormView). MFC handles window
decorations like toolbars and status bars and does the layout of the client window - makes it real
easy to code.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Defenestration wrote: I have an app which will have a lot of controls on it, and will probably make it a dialog based app for easy layout of these controls
For that kind of app, I prefer to use a SDI application where the view is a CFormView. The CFormView has an associated dialog resoruce - lay out your controls on that as you would for a dialog. The rest of the framework handles the menus and toolbars and such for you so you get a nice merging of dialog capabilities and "normal" window-based capabilities.
Judy
|
|
|
|
|
I'm still learning C and C++. I found this magical bit of code that will give the number of elements in an array without knowing it's type. Can anyone explain this in terms mere mortals can understand?
In WinNT.h, around lines 939:
extern "C++"
template <typename t,="" size_t="" n=""><br />
char (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N];<br />
<br />
#define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))</typename>
|
|
|
|
|
It works because it knows the size of T at compile time.
The compiler generates a function at compile time which does:
#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
So if you call the RTL_NUMBER_OF() macro on objects of several different types, it generates a seperate function for each type.
Best Wishes,
-David Delaune
|
|
|
|
|
That's the way I would expect it to work, but I'm sure not seing that in that uncompilable code
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Never mind. I missed this...
Glenn Sandoval wrote: In WinNT.h, around lines 939:
Which led me to the missing code
Cheers,
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Glenn Sandoval wrote: Can anyone explain this in terms mere mortals can understand?
i think the following is too descriptive for mere mortals.
Glenn Sandoval wrote: I found this magical bit of code that will give the number of elements in an array without knowing it's type.
I can see three magics. 1 ) one taking advantage of sizeof(char) as 1, 2)taking advantage of const parameter in template declaration to deduce the size of array.
3) sizeof() operator only bothers type, it won't execute function
Glenn Sandoval wrote:
template <typename T, size_t N>
char (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N];
#define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
1) use of sizeof(char)
(*RtlpNumberOf(A)) effectively has the return type as the charater array type with the equal number of elements that of the Array passed, since sizeof (char) is 1, the sizeof (character array) will be the number of elements.
ie; if you pass <array of anytype>[128], then return type of RtlpNumberOf is char(*)[128], so sizeof(* char(*)[128]) = sizeof(char[128]) = 128 * sizeof(char) = 128
char (*function())[10]; function returning pointer to character array(as function cannot return array so pointer to array)
sizeof(*function()) = sizeof(*char(*)[10]) = sizeof(char[10]) = 10 * sizeof(char) = 10;
// note sizeof operator uses dereferenced return type. (*function())
2) use of const parameter in template
template <size_t N>
void func(char (&arr)[N]);
here the constant parameter N is deduced to number of element of array.
so char cArray[128]; func(cArray) will deduce N as 128;
putting it togetter,
template <typename T, size_t N>
char (*func(T (& )[N]))[N]
func has return type char (*)[N] which sizeof() operator considers.
3) use of sizeof() operator won't execute function.
So definition of function is not needed. at the point of template instantiation, N is deduced to the number of element of array, function is not executed, returns the number of elements.
advantage
advantage of this over sizeof(array)/sizeof(array[0]) is,
1) unnamed struct cannot be used.
2) pointer which may not be an array cannot be used.
modified on Friday, March 7, 2008 10:11 AM
|
|
|
|
|
Rajkumar R wrote: advantage of this over sizeof(array)/sizeof(array[0]) is,
1) unnamed struct cannot be used.
2) pointer which may not be an array cannot be used.
Thanks, that was going to be my next question.
I appreciate all the great responses. I think I understand now.
|
|
|
|