• <转>VC在dll中使用CString类


    CString类用起来非常方便,可是如果不对默认的工程进行一些手术,就没法使用它

    具体的修改方法如下,与大家分享一下。

    在stdfax中加入下面的红色部分

      // stdafx。h
      #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
      #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
     
      #if _MSC_VER > 1000
      #pragma once
      #endif // _MSC_VER > 1000
     
      #define WIN32_LEAN_AND_MEAN  // Exclude rarely-used stuff from Windows headers
     
      #include <afx.h>  // 加在这里
        // Windows Header Files:
      #include <windows.h>
      
      #ifdef _DEBUG
       #pragma comment(lib, "libcmtd.lib")
      #else
       #pragma comment(lib, "libcmt.lib")
      #endif
      // Local Header Files
     
      #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)

    此时你的程序仍然不能使用Cstring,这是因为由于afx.h默认带了一个DllMain,致使要使用CString类需要几个步骤。
    因此在你的dllMain之前加入下面的红色部分的代码即可。

    #include "stdafx.h"
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    #define new DEBUG_NEW

    /////////////////////////////////////////////////////////////////////////////
    // global data

    // The following symbol used to force inclusion of this module for _USRDLL
    #ifdef _X86_
    extern "C" { int _afxForceUSRDLL; }
    #else
    extern "C" { int __afxForceUSRDLL; }
    #endif 

    BOOL APIENTRY DllMain( HANDLE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
          )
    {
        return TRUE;
    }

  • 相关阅读:
    upstream实现内网网站在公网访问
    ifconfig筛选出IP
    ansible安装及配置
    ansible puppet saltstack三款自动化运维工具的对比
    upstream(负载均衡)
    nginx反代及后端web配置
    centos7 安装gdb (调试nginx)
    centos 7搭建 strongSwan
    MySQL主从及读写分离配置
    Python中的用open打开文件错误,FileNotFoundError: [Errno 2] No such file or directory:
  • 原文地址:https://www.cnblogs.com/cnmyp/p/2004177.html
Copyright © 2020-2023  润新知