You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DLL中能否使用外部符号?调用外部符号遇链接错误求解

在DLL中调用主程序定义的外部符号(函数/变量)的解决方案

我想在DLL里调用一个定义在DLL外部的函数;或者把这个函数放到DLL里,但它会用到DLL外部定义的变量。两种尝试都触发了“unresolved external”链接错误,这些外部符号(函数或变量)都定义在使用该DLL的主程序中。请问有没有办法在DLL中使用这类外部符号?

以下是问题的简单示例代码:

// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"

void ExternalFunction();

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

extern "C" __declspec(dllexport)
LRESULT CALLBACK DummyFunction()
{
    ExternalFunction();
    return 0;
}

编辑补充

我找到一个相关问题“circular dependencies between dlls with Visual Studio”,但该问题未涉及“unresolved external”链接错误,提问者似乎已解决问题。这个问题有十个答案,观点差异较大:四个称无解,两个提供其他语言代码,两个建议非Visual Studio方案,一个仅提供文章链接,还有一个方案看似不完整,且没有被采纳的答案。我无法将这些答案应用到自身问题中,除非真的无解,因此希望得到针对本问题的解答。

目前我已实现Alan Birtles的方案:通过DLL导出一个新函数,将ExternalFunction()的指针传入DLL,之后按需调用该指针即可,该方案运行正常,是个优质且独特的解决方案。

内容的提问来源于stack exchange,提问作者Kalle Svensson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:12:10