gpt4 book ai didi

c - 使用 Visual Studio 2015 调试 C DLL

转载 作者:行者123 更新时间:2023-11-30 15:07:07 25 4
gpt4 key购买 nike

我正在为现有应用程序编写 DLL。 DLL 旨在与商业软件连接,通过使用 DLL 添加用户定义的功能可以增强商业软件的功能。

我的 DLL 已编译并且应用程序可以使用这些功能,但我想对其进行调试。当商业软件调用DLL时,我很难附着到进程并进行调试。相反,我想构建单独的代码来测试 DLL。

我能找到的所有带有 DLL 的示例都是针对 C# 或 C++ 的。我不太明白如何在 C 中执行此操作。我似乎陷入了导入 DLL 或在链接器中引用库的困境。

我插入了:

__declspec(dllimport) int UserDefinedSurface4(USER_DATA *UD, FIXED_DATA4 *FD);

但我得到:

LNK2019 unresolved external symbol "__declspec(dllimport) int __cdecl UserDefinedSurface4(struct USER_DATA *,struct FIXED_DATA4 *)" (__imp_?UserDefinedSurface4@@YAHPEAUUSER_DATA@@PEAUFIXED_DATA4@@@Z)

按照针对 C# 和 C++ 的建议,我使用以下方式在项目中添加了 DLL 的路径:属性->链接器->输入->附加依赖项,其中包含显式路径:“D:......\mydll.lib”(这似乎有点脆弱......这是正确的还是我应该使用相对路径或......?)

此外,我还插入了:

#pragma comment(lib, "D:\\...\\mydll.lib")

我已将带有 DLL 的项目包含在我的引用文献中。缺少什么?

最佳答案

您的 dll 导入看起来不错。

检查导出函数的名称。完成此任务的好工具是“Dependency Walker”。如果您的 dll 编译为 C++,函数名称可以是 mangled 。为了防止名称损坏,DLL 项目中的导出定义应该是:

extern "C" __declspec(dllexport) int UserDefinedSurface4(USER_DATA *UD, FIXED_DATA4 *FD);

在您的应用程序中,将“链接器”->“其他库目录”指定到您的库目录,并在“链接器”->“输入”中指定其他依赖项mydll.lib。之后检查链接器 -> 命令行参数,它应该包含:

"mydll.lib" /LIBPATH:"d:\yourlibrarydir\"

关于c - 使用 Visual Studio 2015 调试 C DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38473382/

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