gpt4 book ai didi

c++ - 无法通过 "DllMain already defined"错误获取

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:07 24 4
gpt4 key购买 nike

我正在尝试为 .dll 注入(inject)编写一个 .dll 库。由于这个事实,它必须有一个名为 DllMain 的例程,因为它将用作入口点。我认为我的问题可能源于我正在链接我编写的静态库,该库使用来自 afxmt.h 的线程和互斥锁。因为在线的某个地方,包含它会导致链接器从显然包含其自己版本的 DllMain 的 mfcs100ud.lib 进行链接。

这是给我带来麻烦的文件:

dllmain.cpp

#include "stdafx.h"
#include <stdio.h>
#include "NamedPipeLogger.h"

static CNamedPipeLogger m_PipeLogger("Log.txt");

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

这是 dllmain.cpp 包含的 stdafx.h 文件。

stdafx.h

#pragma once

#define _AFXDLL
#include <Afx.h>

#include "targetver.h"

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers

这是我的错误信息:

Error 32 error LNK2005: _DllMain@12 already defined in dllmain.obj D:\xxxxx\xxxxx\xxxxxx\mfcs100ud.lib(dllmodul.obj)

我是不是被搞砸了,因为我无法将 Dll 入口点的名称更改为 DllMain 以外的名称?

最佳答案

在许多情况下,这是由预处理器设置中的 _USRDLL 引起的,而它应该是 _LIB。这与“MFC 扩展 dll”有关,我认为今天还没有人使用它,但是当您在向导中选中“使用 MFC”时,VS 向导似乎假设您确实想要使用它。

关于c++ - 无法通过 "DllMain already defined"错误获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com