【问题标题】:Can't export functions in C++ Builder 64-bit DLL无法在 C++ Builder 64 位 DLL 中导出函数
【发布时间】:2013-11-04 05:22:48
【问题描述】:

我正在使用 C++ Builder XE4,试图创建一个带有一些导出函数的 64 位 DLL。

这是一些测试代码:

#include <vcl.h>
#include <windows.h>

#pragma hdrstop
#pragma argsused

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
   return 1;
}

extern "C" __declspec(dllexport) __stdcall void Test()
{
   // do smth
}

我创建了两个 DLL,一个是 32 位的目标平台,另一个是 64 位的目标平台,然后使用 impdef.exe 检查两个 DLL。

使用 32 位 DLL 一切正常,我在 cmd 中看到了这一点:

EXPORTS
Test
___CPPdebugHook

使用 64 位 DLL,我看到的只是:

EXPORTS

这可能是什么原因以及在 Embarcadero c++ 中创建 64 位 DLL 的正确方法是什么?

非常感谢。

【问题讨论】:

    标签: c++ dll 64-bit c++builder


    【解决方案1】:

    您的 dll 没有问题。使用 DependencyWalker (depends.exe) 代替 impdef.exe 来查看导出的函数。

    【讨论】:

    • 感谢您的回复!我可以使用依赖项查看器查看导出的函数,但 32 位和 64 位版本的程序在打开我的 dll 时都会给我以下错误:错误:找不到至少一个必需的隐式或转发的依赖项.错误:由于隐式依赖模块中缺少导出函数,至少一个模块具有未解析的导入。错误:发现具有不同 CPU 类型的模块。无论如何,谢谢你的建议。
    • 不用担心这些错误。它们不是重要的问题。我什至在 VC++ dll 上也看到过它们。
    • 我也有同样的问题,不允许我调试dll!我怎样才能强制这个包含在 x64 dll 中?我有几个以相同方式创建的 dll。一些项目已经创建了这个变量(CPPdebugHook),而其他项目没有创建。
    猜你喜欢
    • 2012-09-06
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2018-01-26
    • 2019-10-09
    • 1970-01-01
    相关资源
    最近更新 更多