【问题标题】:How to generate c# class file for internal class in dll如何在dll中为内部类生成c#类文件
【发布时间】:2013-09-18 11:24:28
【问题描述】:

所有,我试图调用在 c# 项目的 DLL 中定义的 API。代码如下所示。

[DllImport("twain_32.dll", EntryPoint="#1")]
<Function declaration>

我知道在这个 twain_32.dll 中定义了很多公共类型,

我知道 dll 中定义了如下函数。

TW_UINT16 FAR PASCAL DSM_Entry( pTW_IDENTITY pOrigin,
                                  pTW_IDENTITY pDest,
                                  TW_UINT32    DG,
                                  TW_UINT16    DAT,
                                  TW_UINT16    MSG,
                                  TW_MEMREF    pData);

我不知道我应该在c#中定义什么类来表示pTW_IDENTITY?是否有任何工具可以将所有这些类型定义导出到 c# 类代码。像c++中的头文件.h?谢谢。

【问题讨论】:

  • 找到该库的文档和头文件,并进行翻译。你在哪里找到了那个函数原型?
  • @DavidHeffernan 我在 twain 的头文件 (c++) 中找到了它。但是我很困惑如何将引用的类型转换为 c# 代码。我原以为会有一些工具使它更容易工作。谢谢。
  • 没有工具。自己翻译,或者看看你是否找不到现有的。例如 TwainDotNet。没有必要重新发明轮子。你的可能会出现方形! ;-)
  • :D 这正是我担心的!我认为重新发明汽车没有意义! :P

标签: c# winapi dllimport twain


【解决方案1】:

PInvoke.net 是一个很好的资源。

他们有一些 TWAIN_32 库调用的示例 + pTW_IDENTITY 的结构

http://www.pinvoke.net/default.aspx/twain_32.TwIdentity

【讨论】:

    【解决方案2】:

    没有可以自动执行此操作的工具,但有一个名为 pinvoke.net 的站点提供了许多 P/Invoke 签名和示例。对于您的问题,这里是链接:TwIdentity (twain_32)

    此外,还有一些可用的开源库将本机功能封装到托管类中,例如:Saraff.Twain.NETtwain-in-dotnet,因此查看它们的源代码,您可能会找到所需的所有定义。

    【讨论】:

    • @Eoin:是的,大声笑,那是同时发生的!
    • 谢谢两位。这是我需要的。感谢那些为我们完成了伟大工作的人,否则我们必须这样做很多次。
    • @Groo 好答案! +1
    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2017-05-27
    相关资源
    最近更新 更多