Click here to Skip to main content
15,886,689 members
Articles / Desktop Programming / ATL

Linker Errors, CString, ATL, MFC, and YOU!

Rate me:
Please Sign up or sign in to vote.
4.88/5 (24 votes)
15 Nov 20207 min read 245.3K   1K   70  
Linker errors due to CStringT template classes and ATL vs. MFC issues
The goal in this article is to make a well behaved library that will link up without any special options specified in the consuming applications, other than importing the library, and including the header file.
//Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//

#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE  
BEGIN
	"resource.h\0"
END

2 TEXTINCLUDE  
BEGIN
	"#include ""afxres.h""\r\n"
	"\0"
END

3 TEXTINCLUDE  
BEGIN
    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    "#define _AFX_NO_OLE_RESOURCES\r\n"
    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
	"\r\n"
	"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
	"LANGUAGE 9, 1\r\n"
	"#pragma code_page(1252)\r\n"
	"#include ""res\\Application.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
	"#include ""afxres.rc""  	// Standard components\r\n"
	"#endif\r\n"
	"\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(1252)
IDR_MAINFRAME           ICON         "res\\Application.ico"
#endif
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//

IDR_MAINFRAME           BITMAP      "res\\Toolbar.bmp"

/////////////////////////////////////////////////////////////////////////////
//
// Toolbar
//

IDR_MAINFRAME TOOLBAR   16, 15
BEGIN
    BUTTON      ID_EDIT_CUT
    BUTTON      ID_EDIT_COPY
    BUTTON      ID_EDIT_PASTE
	SEPARATOR
    BUTTON      ID_APP_ABOUT
END



#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDR_MAINFRAME MENU   
BEGIN
	POPUP "&File"
	BEGIN
		MENUITEM "E&xit",                       ID_APP_EXIT
	END
	POPUP "&Edit"
	BEGIN
		MENUITEM "&Undo\tCtrl+Z",               ID_EDIT_UNDO
		MENUITEM SEPARATOR
		MENUITEM "Cu&t\tCtrl+X",                ID_EDIT_CUT
		MENUITEM "&Copy\tCtrl+C",               ID_EDIT_COPY
		MENUITEM "&Paste\tCtrl+V",              ID_EDIT_PASTE
	END
	POPUP "&View"
	BEGIN
		MENUITEM "&Toolbar",                    ID_VIEW_TOOLBAR
		MENUITEM "&Status Bar",                 ID_VIEW_STATUS_BAR
	END
	POPUP "&Help"
	BEGIN
		MENUITEM "&About Application...",          ID_APP_ABOUT
	END
END


/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//

IDR_MAINFRAME ACCELERATORS   
BEGIN
	"C",            ID_EDIT_COPY,           VIRTKEY,CONTROL,NOINVERT
	"V",            ID_EDIT_PASTE,          VIRTKEY,CONTROL,NOINVERT
	VK_BACK,        ID_EDIT_UNDO,           VIRTKEY,ALT,NOINVERT
	VK_DELETE,      ID_EDIT_CUT,            VIRTKEY,SHIFT,NOINVERT
	VK_F6,          ID_NEXT_PANE,           VIRTKEY ,NOINVERT
	VK_F6,          ID_PREV_PANE,           VIRTKEY,SHIFT,NOINVERT
	VK_INSERT,      ID_EDIT_COPY,           VIRTKEY,CONTROL,NOINVERT
	VK_INSERT,      ID_EDIT_PASTE,          VIRTKEY,SHIFT,NOINVERT
	"X",            ID_EDIT_CUT,            VIRTKEY,CONTROL,NOINVERT
	"Z",            ID_EDIT_UNDO,           VIRTKEY,CONTROL,NOINVERT
END

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_ABOUTBOX DIALOGEX   0, 0, 235, 55
CAPTION "About Application"
STYLE DS_MODALFRAME | DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
BEGIN
	ICON            IDR_MAINFRAME,IDC_STATIC,11,17,20,20
	LTEXT           "Application Version 1.0",IDC_STATIC,40,10,119,8,
                    SS_NOPREFIX
	LTEXT           "Copyright (C) 2003",IDC_STATIC,40,25,119,8
	DEFPUSHBUTTON   "OK",IDOK,178,7,50,16,WS_GROUP
END


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO     VERSIONINFO
  FILEVERSION       1,0,0,1
  PRODUCTVERSION    1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
	BLOCK "StringFileInfo"
	BEGIN
        BLOCK "040904e4"
		BEGIN 
            VALUE "CompanyName", "TODO: <Company name>"
            VALUE "FileDescription", "TODO: <File description>"
			VALUE "FileVersion",     "1.0.0.1"
			VALUE "InternalName",    "Application.exe"
            VALUE "LegalCopyright", "TODO: (c) <Company name>.  All rights reserved."
			VALUE "OriginalFilename","Application.exe"
            VALUE "ProductName", "TODO: <Product name>"
			VALUE "ProductVersion",  "1.0.0.1"
		END
	END
	BLOCK "VarFileInfo" 
	BEGIN 
		VALUE "Translation", 0x409, 1252
    END
END

/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO  
BEGIN
    IDD_ABOUTBOX, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 228
        TOPMARGIN, 7
        BOTTOMMARGIN, 48
    END
END
#endif    // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// String Table
//

STRINGTABLE   
BEGIN
// Non-mac-targeting apps remove the two extra substrings
	IDR_MAINFRAME           "Application"
END
STRINGTABLE   
BEGIN
	AFX_IDS_APP_TITLE       "Application"
	AFX_IDS_IDLEMESSAGE     "Ready"
END
STRINGTABLE  
BEGIN
	ID_INDICATOR_EXT        "EXT"
	ID_INDICATOR_CAPS       "CAP"
	ID_INDICATOR_NUM        "NUM"
	ID_INDICATOR_SCRL       "SCRL"
	ID_INDICATOR_OVR        "OVR"
	ID_INDICATOR_REC        "REC"
END
STRINGTABLE  
BEGIN
	ID_APP_ABOUT            "Display program information, version number and copyright\nAbout"
	ID_APP_EXIT             "Quit the application; prompts to save documents\nExit"
	ID_NEXT_PANE            "Switch to the next window pane\nNext Pane"
	ID_PREV_PANE            "Switch back to the previous window pane\nPrevious Pane"
	ID_WINDOW_SPLIT         "Split the active window into panes\nSplit"
	ID_EDIT_CLEAR           "Erase the selection\nErase"
	ID_EDIT_CLEAR_ALL       "Erase everything\nErase All"
	ID_EDIT_COPY            "Copy the selection and put it on the Clipboard\nCopy"
	ID_EDIT_CUT             "Cut the selection and put it on the Clipboard\nCut"
	ID_EDIT_FIND            "Find the specified text\nFind"
	ID_EDIT_PASTE           "Insert Clipboard contents\nPaste"
	ID_EDIT_REPEAT          "Repeat the last action\nRepeat"
	ID_EDIT_REPLACE         "Replace specific text with different text\nReplace"
	ID_EDIT_SELECT_ALL      "Select the entire document\nSelect All"
	ID_EDIT_UNDO            "Undo the last action\nUndo"
	ID_EDIT_REDO            "Redo the previously undone action\nRedo"
	ID_VIEW_TOOLBAR         "Show or hide the toolbar\nToggle ToolBar"
	ID_VIEW_STATUS_BAR      "Show or hide the status bar\nToggle StatusBar"
END

STRINGTABLE  
BEGIN
	AFX_IDS_SCSIZE          "Change the window size"
	AFX_IDS_SCMOVE          "Change the window position"
	AFX_IDS_SCMINIMIZE      "Reduce the window to an icon"
	AFX_IDS_SCMAXIMIZE      "Enlarge the window to full size"
	AFX_IDS_SCNEXTWINDOW    "Switch to the next document window"
	AFX_IDS_SCPREVWINDOW    "Switch to the previous document window"
	AFX_IDS_SCCLOSE         "Close the active window and prompts to save the documents"
	AFX_IDS_SCRESTORE       "Restore the window to normal size"
	AFX_IDS_SCTASKLIST      "Activate Task List"
END

#endif

IDR_MANIFEST	RT_MANIFEST	"res\\Application.manifest"

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(1252)
#include "res\\Application.rc2"  // non-Microsoft Visual C++ edited resources
#include "afxres.rc"  	// Standard components
#endif
#endif    // not APSTUDIO_INVOKED

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


Written By
Web Developer
United States United States
I have been programming for about 15 years, starting off with simple BASIC on the venerable C=64 and progressing all the way to C#.

I am currently for hire and contracting projects, so if you have opportunities in the Mid-West area, feel free to contact me! My strengths include C#/ASP.NET, MS-SQL Server, Client/Server/Distributed Architectures, C++/ATL7/MFC, and JAVA (Servlets/J2ME).

I am currently developing a live ranking system for Halo at www.haloranking.com, stop by and check it out!

Comments and Discussions