【问题标题】:Creating DLL with SWIG from VS2010 error LNK2019: unresolved external symbol "int __cdecl axtoi从 VS2010 错误 LNK2019 使用 SWIG 创建 DLL:无法解析的外部符号“int __cdecl axtoi
【发布时间】:2012-09-18 01:05:14
【问题描述】:

我正在尝试使用 Visual Studio 2010 中的 swig 生成一个 dll 文件,我成功创建并编译了我的 wrapper.cpp 代码,并将每个库依赖项添加到我的项目中。现在,当我尝试使用 .dll 目标扩展构建项目的发布版本时,出现以下错误:

  Generating non-SAFESEH image.
1>Ccrypto_wrap.obj : error LNK2019: unresolved external symbol "int __cdecl axtoi(char const *)" (?axtoi@@YAHPBD@Z) referenced in function __wrap_axtoi

这是连线的,因为 wrapper.cpp 中的所有其他外部符号都已解析,除了

axtoi!我的意思是,例如在我的 wrapper.cpp 中,我有 2 个引用 axtoi:

(1)

ZEND_NAMED_FUNCTION(_wrap_axtoi) {   char *arg1 = (char *) 0 ;   zval
**args[1];   int result;
     SWIG_ResetError();   if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_array_ex(1, args) != SUCCESS) {
    WRONG_PARAM_COUNT;   }

      /*@SWIG:C:\Users\user\Desktop\Ccrypto\Lib\php\utils.i,62,CONVERT_STRING_IN@*/
      if ((*args[0])->type==IS_NULL) {
        arg1 = (char *) 0;
      } else {
        convert_to_string_ex(args[0]);
        arg1 = (char *) Z_STRVAL_PP(args[0]);
      }
      /*@SWIG@*/;

      result = (int)axtoi((char const *)arg1);
      {
        ZVAL_LONG(return_value,result);
      }
      return;
    fail:
      SWIG_FAIL();
    }

(2)

SWIG_ZEND_NAMED_FE(axtoi,_wrap_axtoi,NULL)

我在 Linux 中成功创建了我的班级的共享对象,并将它包含在我的 php 代码中并且它工作正常,所以我尝试在我的 Linux 共享对象中检查axtoi,我发现了一件奇怪的事情!当我在我的共享对象中 grep axtoi 时,我得到了:

         U _Z5axtoiPKc
0006ccf1 T _wrap_axtoi

但对于所有其他符号,例如 itoax,其用法与我拥有的包装代码中的 axtoi 相同:

00093660 T _Z5itoaxi
0006e19f T _wrap_itoax

如上所述,我的 wrapper.cpp 代码中有几个与 axtoi 完全相同的符号,但我没有得到任何未解决的外部符号错误。有什么想法吗?

【问题讨论】:

  • axtoi 听起来像是一个错字 - 你确定你没有输入它而不是 atoi 吗?
  • 是的,我没有输入任何东西,这个函数是 swig 生成的包装器代码函数之一,我的意思是 xxx_wrap.cpp。当我尝试从这个文件和我的类构建 dll 时,我得到了这个错误。
  • 在没有任何来源或导致错误的步骤的情况下发布错误消息并不是很有用。
  • 我编辑了我的问题并提供了更多细节,希望这次有人能帮助我

标签: visual-studio-2010 swig main php-extension


【解决方案1】:

我找到了答案: 似乎 c++ 选项中的 swig 包装器代码生成器调用 axtoi() 函数而不是 atoi() 函数。需要在 SWIG 生成的 wrapper.cpp 中进行编辑,然后错误解决。

【讨论】:

    猜你喜欢
    • 2020-01-13
    • 2014-11-18
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2011-12-12
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多