2013-10-25 48 views
2

我正在使用C++ Builder XE4,尝试使用某些导出的函数创建64位DLL。无法在C++ Builder 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位的目标平台,然后检查这两个DLL文件与IMPDEF。可执行程序。

随着32位的DLL一切正常,我看到这个CMD:

EXPORTS 
Test 
___CPPdebugHook 

随着64位的DLL的所有我看到的是:

EXPORTS 

有什么可以的原因为此,以及在Embarcadero C++中创建64位DLL的正确方法是什么?

非常感谢。

回答

3

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

+0

感谢您的回复!我可以看到导出的函数与依赖walker,这两个32位和64位版本的程序在打开我的dll时给我以下错误: 错误:至少有一个需要的隐式或转发的依赖项不是找到。 错误:由于隐式依赖模块中缺少导出功能,至少有一个模块具有未解析的导入。 错误:找到具有不同CPU类型的模块。 无论如何,谢谢你的建议。 –

+1

不要担心这个错误。他们不是重要的问题。我甚至在VC++ dll上看过他们。 –

+0

我有同样的问题,它不允许我调试DLL!我如何强制这个包含在x64 dll中?我有几个dll,我以同样的方式创建。有些项目已经创建了这个变量(CPPdebugHook),其他项目不创建。 – GPB83