【问题标题】:How do I properly modify a .def file in a Visual C++ 6 program?如何在 Visual C++ 6 程序中正确修改 .def 文件?
【发布时间】:2011-03-20 23:28:14
【问题描述】:

我正在对使用 .def 文件处理函数导出的 C++ 6.0 项目进行维护。我必须将一对实例方法添加到类定义中,但我不知道如何将这些方法添加到 .def 文件中以便将它们导出。 .def 文件中 EXPORTS 部分下的每一行看起来都类似于?MethodName@ClassName@@AStringOfLetters,最后可能会加上@Z,我无法理解。我假设字母字符串以某种方式对应于方法的原型,但我找不到任何描述编码的文档。我添加的方法没有与任何现有方法完全匹配的原型。

假设我的新方法原型如下所示:

  short ClassName::Foo1(const short, const unsigned int, const short, const unsigned int *);
  short ClassName::Foo2(const short, const unsigned int, short *, unsigned int *);

我需要向 .def 文件添加什么才能使我的链接器满意并实际导出方法?

【问题讨论】:

    标签: c++ visual-c++ dll linker


    【解决方案1】:

    您正在导出 C++ 错位符号。我会在它们前面临时添加一个__declspec(dllexport),然后将DLL加载到Dependency Walker之类的东西中,或者使用dumpbin查看导出的内容。这将为您提供新功能的损坏符号,然后您可以将其添加到 .def 文件并删除 __declspec

    【讨论】:

      【解决方案2】:

      要为您的新函数获取错误名称,只需注释掉实现并构建项目。这样你会得到一个更喜欢的错误,显示你的新函数的错误名称。用这个新的重整名称更新您的 def 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-26
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        相关资源
        最近更新 更多