zoukankan      html  css  js  c++  java
  • <转>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;
    }

  • 相关阅读:
    工作的本质是思考
    V8、JSCore、Hermes、QuickJS,hybrid开发JS引擎怎么选
    Aspects框架的源码解读及问题解析
    饿了么移动APP的架构演进
    关键字:客户端架构演进
    以小见大,见微知著——亿万级APP架构演进之路
    理解 Swift:ObjectiveC 的构建管道
    MMKV 组件现在开源了
    进阶:iOS 性能优化系列
    你如果无法度量它,就无法管理它
  • 原文地址:https://www.cnblogs.com/cnmyp/p/2004177.html
Copyright © 2011-2022 走看看