none
在Visual Studio 2005中如何调用C++Builder中的DLL文件 RRS feed

答案

  • 导出函数表 (Export Function Table) 是描述一个 PE 文件向外界公开的可执行 API 以及附属结构的集合,位于 PE 文件中。例如,要使用 MessageBox 函数,user32.dll 中必须有 MessageBox 函数对应的导出函数定义。

    一个明显的导出函数定义如下:

    DLLEXPORT BOOL WINAPI MyFunctionName(INT myParam) ...

    只有导出函数表包含的函数,才能被外界所使用。当然,对于托管 DLL,没有此说法。

    关于 Interop,请参考 Internet 上的资料,由于它的复杂性,我不能在一篇文章中进行解释,在使用上,您需要了解 DllImport 属性 (Attribute),Marshal 类以及 extern 关键字的用法。
    Mark Zhou
    • 已标记为答案 hu_772000 2009年9月17日 1:49
    2009年9月16日 8:20

全部回复

  • 首先,此 DLL 应包含导出函数定义且为标准 Win32 PE 文件
    其次,您熟悉 Interop

    有了这两点,您就可以利用 Interop 操作/LoadLibrary 直接使用此 DLL 中的导出函数了。


    Mark Zhou
    2009年9月16日 6:28
  • DLL文件是C++Builder6生成的(DLL Wizard向导生成的),是不是标准的Win32 PE文件

    2009年9月16日 6:36
  • 是一个ASP.NET 2.0网站(C#语言),要调用C++Builder的DLL文件,用常规的"添加引用",弹出一个报错信息"在组件中找不到类型库".各位MVC帮帮忙!

    2009年9月16日 6:42
  • C++ Builder 生成的静态 DLL 文件是标准 PE,不过我提到了,必须有导出函数表,才能对此 DLL 进行 Interop。

    “添加引用”出现的找不到类型库德原因,是因为此 DLL 不是托管程序集,或者不能生成 TLB,或此 DLL 不是 COM 可见的组件。
    Mark Zhou
    2009年9月16日 8:04
  • 1.你所说的函数表,是不是该DLL中的所有方法的名字?
    2.Interop如何使用.
    3.请指导我一下,谢谢!

    2009年9月16日 8:13
  • 导出函数表 (Export Function Table) 是描述一个 PE 文件向外界公开的可执行 API 以及附属结构的集合,位于 PE 文件中。例如,要使用 MessageBox 函数,user32.dll 中必须有 MessageBox 函数对应的导出函数定义。

    一个明显的导出函数定义如下:

    DLLEXPORT BOOL WINAPI MyFunctionName(INT myParam) ...

    只有导出函数表包含的函数,才能被外界所使用。当然,对于托管 DLL,没有此说法。

    关于 Interop,请参考 Internet 上的资料,由于它的复杂性,我不能在一篇文章中进行解释,在使用上,您需要了解 DllImport 属性 (Attribute),Marshal 类以及 extern 关键字的用法。
    Mark Zhou
    • 已标记为答案 hu_772000 2009年9月17日 1:49
    2009年9月16日 8:20
  • 谢谢!!

    2009年9月16日 8:26
  • 你好!
         补充一下,如果无法直接添加引用的话,需要重写这个dll,把一些函数定义成导出函数!
         或是直接把这个dll重写成COM组件,方便以后的交互操作!
    周雪峰
    2009年9月16日 10:18
    版主