博客
关于我
LNK2005: _DllMain@12 already defined in LIBCMTD.lib(dllmain.obj)
阅读量:793 次
发布时间:2023-02-06

本文共 775 字,大约阅读时间需要 2 分钟。

在使用Visual Studio 2003创建MFC DLL项目时,出现了一系列错误和警告,主要集中在DllMain函数和操作符new/delete的重复定义上。以下是逐步解决方案:

  • 恢复预编译头设置

    • 打开项目属性,转到“VC++项目” > “预编译头文件”。
    • 确保“使用预编译头文件”选项勾选,同时设置“预编译输出路径”和“使用共享预编译头文件”(或根据需要选择)。
    • 保存属性设置,重新编译项目,这将生成新的预编译头文件。
  • 确保包含必要的头文件

    • 在所有涉及的cpp文件中,添加#include "stdafx.h",确保包含标准头文件。
    • 检查是否有其他必要的头文件(如
      ,
      等)也需要包含,以避免定义缺失。
  • 检查DllMain函数的定义

    • 确保只在一个cpp文件中定义了DllMain函数,避免在多个位置重复定义。
    • 检查是否有源文件中包含多次DllMain的定义,或者是否有第三方库也包含了它,导致重复。
  • 修复操作符的重复定义

    • 确保没有手动定义操作符new或delete,因为这些通常由标准库定义。
    • 如果在项目中包含了自定义的new/delete操作符,可能需要重新设计代码,或者确保它们不与标准定义冲突。
  • 检查项目中的重复包含

    • 查看项目中的所有头文件包含情况,确保没有重复包含相同的文件。
    • 检查是否有其他库文件(如第三方库)包含了冲突的定义,需要调整链接选项或代码。
  • 清理旧的对象文件

    • 在项目的“清理”选项中,手动清理生成的对象文件和临时文件,然后重新编译。
    • 确保没有残留的旧编译结果导致符号冲突。
  • 重新测试和调试

    • 编译项目,检查是否仍然有错误或警告。
    • 如果仍然存在问题,可以尝试逐步排除问题,例如先解决DllMain的定义问题,再处理操作符的冲突。
  • 通过以上步骤,应能逐步解决DLL生成中的符号冲突问题,确保项目能够顺利编译和运行。

    转载地址:http://jyufk.baihongyu.com/

    你可能感兴趣的文章
    linux软件包:RPM包、源码包、yum在线
    查看>>
    Linux软硬链接详解
    查看>>
    Linux输入错误字符 删除显示^H和快速删除命令
    查看>>
    Linux运维之道之网络基础学习1.3
    查看>>
    linux运维实战练习-2015年9月01日课程作业(练习)安排
    查看>>
    Linux运维工程师必知的服务器备份工具:Rsnapshot
    查看>>
    Linux运维工程师必知:如何在 Linux 中使用网络命令netstat?
    查看>>
    Linux运维工程师必须要掌握的Docker命令,我给你整理好了!
    查看>>
    linux运维工程师的发展,Linux运维工程师发展前景
    查看>>
    Linux运维工程师笔试题第十三套
    查看>>
    Linux运维必备!手把手教你搭建OpenFalcon监控系统
    查看>>
    Linux运维趋势
    查看>>
    Linux进程地址空间和虚拟内存
    查看>>
    Linux进程地址管理之mm_struct
    查看>>
    Linux进程堆栈状态分析实战
    查看>>
    Linux进程状态解析之R、S、D、T、Z、X
    查看>>
    Linux进程的实际用户ID和有效用户ID
    查看>>
    Linux进程管理实战指南:实用工具命令详解
    查看>>
    Linux进程间通信 - 共享内存
    查看>>
    Linux进程间通信——使用命名管道
    查看>>