【问题标题】:dll loacation Error by running a testcode运行测试代码导致的 dll 定位错误
【发布时间】:2022-05-17 20:37:10
【问题描述】:

我正在学习如何使用 dll 以及如何导出它们。我创建了一个小程序,它调用我的 dll 文件的不同组件(类、方法、函数等)来使用它们。当我构建项目时,我没有问题,但是当我编译测试代码时,我得到了这个错误。

错误翻译:{在 DLL“C:\Users\zboussaid\source\repos\WrapperTester\Debug”中找不到程序入口点“?Start@K_WrapperTeigha_DXF_DWG@@QAEXXZ”}。

图片显示我的DLL文件中的一个函数start方法在我的测试代码所在的路径中找不到。我已尝试按照此 drescription 所示配置我的属性,但正如我所说,我收到此错误。如果您能帮助我,我将不胜感激

类定义:

extern "C" class KWRAPPERTEIG_API K_WrapperTeigha_DXF_DWG
 {
  private:
     //create Data base
     OdDbDatabase* pDb;

     //tables
     OdDbLinetypeTablePtr    w_kOdLinetypeTablePtr;
     OdDbLayerTablePtr       w_kOdLayerTablePtr;
     OdDbTextStyleTablePtr   w_kOdTextStyleTablePtr;
     OdDbBlockTablePtr       w_kOdBlockTablePtr;

     OdDbBlockTableRecordPtr     w_kOdModelSpaceBlockRecPtr;
     //OdDbTextStyleTableRecordPtr pTextStyle;
 public:
     OdDb::DwgVersion     m_OdDwgVersion;    // Dwg/Dxf Version
     OdDb::SaveType       m_OdSaveType;      // DWG oder DXF




 public:
     K_WrapperTeigha_DXF_DWG();
     ~K_WrapperTeigha_DXF_DWG();

     void Start();
  }

宏:

#ifdef KWRAPPERTEIG_EXPORTS
#define KWRAPPERTEIG_API __declspec(dllexport)
#ifndef KWRAPPERTEIG__DLL
    #define KWRAPPERTEIG__DLL
#endif
#else
#define KWRAPPERTEIG_API __declspec(dllimport)
#endif

【问题讨论】:

  • 你试过用extern "C" 做DLL吗?
  • 所有的函数/类都正确导出了吗?
  • 是的,我试过了,但没有任何改变
  • 对不起@kiner_shah 好的,我会做的
  • @YujianYao-MSFT & Kiner_shah 非常感谢您的帮助。我已经解决了这个问题。我的问题是我在星期五创建了 dll 文件,然后想到更改创建 dll 文件的位置并忘记了它。然后在星期一我复制了不包含我的 start() 方法的旧文件。所以问题是dll文件设置的参数化错误。

标签: c++ visual-studio dll compiler-errors linker


【解决方案1】:

这实质上意味着您的宏 KWRAPPERTEIG_API 未正确定义。它应该扩展为 __declspec(dllexport) 以便导出类函数。

extern "C" 应该关闭函数的名称修饰,因此它们可以被 C 使用。这可以工作,因为 C 理解函数,而不是重载函数。但是C不理解类或类方法,所以它在那里有点毫无意义。你可以看到Start@K_WrapperTeigha_DXF_DWG@@QAEXXZ 仍然被破坏了。

【讨论】:

    【解决方案2】:

    @YujianYao-MSFT & Kiner_shah 非常感谢您的帮助。我已经解决了这个问题。我的问题是我在星期五创建了 dll 文件,然后想到更改创建 dll 文件的位置并忘记了它。然后在星期一我复制了不包含我的 start() 方法的旧文件。所以问题是dll文件设置的参数化错误。

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      相关资源
      最近更新 更多