15.6. Misc. Visual C++ questions

Microsoft Visual C++/Microsoft Foundation Classes


15.6. Miscellaneous Visual C++ questions

UPD!! 15.6.1. What are all these files that MSVC is creating?!

Here's a table that explains the common extensions and what MSVC uses them for:

Extension Use Notes
APS App Studio File
BSC Browser File SBR's combined into 1 BSC
CLW Class Wizard File
DSP
Project file for DevStudio Contains information specific to a project. Used to be in the .mak file. DSW Workspace file for DevStudio It organizes all the projects into a single workspace. ILK Incremental Linker File NCB Contains the ClassView information information generated by the parser which is used by ClassView, WizardBar, and Component Gallery. Added in 4.0, delete if you  have problems.         ODL COM interface definition Used to generate a type library OPT Options file for DevStudio It stores all the user options you create for your workspace PCH Pre-Compiled Header File PDB Debugging Info /Z7 Affects This RES RC 'object' File Linked Into EXE SBR Browser Info for 1 File Combined Into BSC VCP Visual C++ State File

Thanks to [email protected] for additional entries .

%%TODO: Fill this table in more completely.

15.6.2. How do I change from using MFCXX.DLL to using a statically linked library?

You need to flick a few settings in the build settings windows:

In the C/C++ tab, select the "General" Category:

  1. Remove "_AFXDLL" from the list of preprocessor definitions.
  2. In the"Code Generation" tab, select "Multithreaded' or "Debug Multithreaded", which ever is appropriate for your build.  I
  3. n the "Resources" tab, make sure that "_AFXDLL" doesn't appear in the list that's in the "Preprocessor Definitions" edit.

-Mike B - [email protected]

15.6.3. How do I report a bug to Microsoft?

[ed. note: Here's a fun answer from Mike B on this one, seems Mike gets lots of "how do I", or "is this a bug" emails. This FAQ actually has good info, I kept some of the personal stuff because it livens it up somewhat.]

I think need to explain something about bug reporting.

While everyone on this list knows that I work at Microsoft, and most people know that I work on MFC, it seems that very few people understand how bugs should be reported to Microsoft about Microsoft products.

If you're a Microsoft Select customer, or you're involved with Microsoft Consulting Services, you should talk to your Corporate Account Manager or Engagement Manager about how you should get information about bugs to and from Microsoft.

If you're a user who has bought Visual C++, you need to use the "Technical Support" command in the "Help" menu of Visual C++. This help topic explains a lot about contacting PSS, Microsoft's Product Support Services.

If you have a support agreement with PSS, or if you _don't_ have an agreement with PSS, you can call to report a bug without charge. You _will_ have to pay for your own long-distance phone call, but you'll not be debited for the time you spend making the report by Microsoft.

Everyone should have understood this, but I guess many don't. Further:

Microsoft certainly encourages third-party and peer support for Microsoft products. You should be able to find certified Microsoft consultants near where you work, and you should be able to find peer-support places to talk about Microsoft products. MFC-L is an example of one, and the MSMFC forum on CompuServe is another.

The problem is, though, that a few people have written to me (and, I suppose, other MS-people on the list) personally requesting that I handle a bug report or requesting that I provide one-on-one help.

Frankly, I just don't have the time to do that. I try to answer lots of questions in public places (like on MFC-L, or on MSMFC, or in the occasional book) to help out and encourage the peer-support communities. But I don't have time to hand-hold people through problems, and I don't have the time to accept bug reports.

"Accepting a bug report", if you don't realize it, means that I would get from you a complete reproduction case, figure out what is wrong, reproduce it myself, and report it to the appropriate folks. I can't skip those steps because it makes noise for the appropriate folks if they've already heard about the problem before.

I really don't mean to be a prick: I just can't make (or even imply) promises that I know I'm not capable of keeping.

Now, on the other hand, if you report a problem to a public place (like MFC-L or to CompuServe) and I see it, I might try to reproduce it. I'll steal it from the list and take it to work, where I can see if it was reported before. And when I have time, I can fool with it. But I can _NOT_ imply any obligation--I can't promise that I'll do even this much... but since

I'm interested in MFC, I usually try. It's unofficial--all it is some guy who wants to go out of his way to help out.

So, if you find what you think is a bug, here's what you should do:

1) Panic.

2) Threaten to nuke my neighborhood.

3) Try to consolidate the problem.

4) Take that consolidation to another project on another machine and try it

5) If it still is a problem, step through the code. THINK..

6) THINK some more..

If you're still sure its a bug, do one or more of these things:

a) Call PSS.

b) Talk to a support professional, like a certified consultant.

c) Write to MFC-L or the MSFMC group, or the MFC bulletin board on MSN.

but realize that only (A) is the official, guaranteed way to get help.

My job is to write software, and I try to be pretty good at that. (I'm pretty good at going to hockey games, too.) But I really can't also do the job of product support on a full-time, full-responsibility basis. Sending bug reports directly to me will do nothing more than make me feel awkward and say "Sorry, can't help" to you.

Thanks for understanding,

- [email protected]