从 DLL 函数调用非 DLL 函数

Posted

技术标签:

【中文标题】从 DLL 函数调用非 DLL 函数【英文标题】:Calling non-DLL function from DLL function 【发布时间】:2011-01-12 18:19:23 【问题描述】:

我正在编写一个 DLL:

#include "stdafx.h"
_DLLAPI int __stdcall myDLLFunc()  
  
    return test(4);

int test(int arg)

    return arg * arg;

但是当我尝试在 MS VC++ Express 中编译它时,它说:

错误 C3861:“测试”:找不到标识符

如何从myDLLFunc 呼叫test? 我错过了显而易见的事情吗?

提前致谢。

【问题讨论】:

【参考方案1】:

将被调用函数放在代码中的调用者之前,它应该可以编译。 C++ 不会对被调用的函数进行“前瞻”,它们必须在任何使用之前声明。

#include "stdafx.h"

int test(int arg)

    return arg * arg;
_DLLAPI int __stdcall myDLLFunc()  

  
    return test(4);

通常,您会将函数的声明(在头文件中)与定义(在代码文件中)分开,以降低依赖关系的复杂性。

【讨论】:

或者您可以在不将 test() 移到 myDLLFunc() 上方的情况下进行 test() 的前向声明。 @Ganesh - 谢谢,我添加了关于标题/代码分离的注释

以上是关于从 DLL 函数调用非 DLL 函数的主要内容,如果未能解决你的问题,请参考以下文章

调用使用 C# 返回结构数组的非托管 dll 函数

如何调用 DLL 的非导出函数?

从 c# dll 调用/编组字符串到非托管代码

从 C# 调用 Advapi32.dll 本机 EventWrite 函数?

dllimport如何在非托管dll中获取哪个应用程序调用了函数

从 C# 线程内的非托管 dll 运行函数