从VS2010创建带有SWIG的DLL错误LNK2019:未解析的外部符号"int __cdecl axtoi



我正试图用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!我的意思是,例如,在我的包装.cpp中,我有两个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:UsersuserDesktopCcryptoLibphputils.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,我发现了一件奇怪的事情!当我在共享对象中输入axtoi时,我得到了:

U _Z5axtoiPKc
0006ccf1 T _wrap_axtoi

但对于每一个其他符号,例如CCD_ 5,其用法与包装码中的CCD_

00093660 T _Z5itoaxi
0006e19f T _wrap_itoax

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

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

相关内容

  • 没有找到相关文章

最新更新