Java 使用swig对android studio中函数的未定义引用

Java 使用swig对android studio中函数的未定义引用,java,c++,swig,Java,C++,Swig,我正在尝试使用AndroidStudio 2.3构建本机android应用程序示例,但遇到了一些问题。项目代码如下所示 MainActivity.java package com.example.angelica.testfive; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivit

我正在尝试使用AndroidStudio 2.3构建本机android应用程序示例,但遇到了一些问题。项目代码如下所示

MainActivity.java

package com.example.angelica.testfive;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("summer");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Example of a call to a native method
        TextView tv = (TextView) findViewById(R.id.sample_text);
        tv.setText(summer.getSum(2,10).toString());
    }


}
summer.h

#ifndef TESTFIVE_SUMMER_H
#define TESTFIVE_SUMMER_H

#ifdef __cplusplus
#define EXTERN extern "C"
#else
#define EXTERN
#endif

EXTERN char* getSum(int a, int b);
#endif //TESTFIVE_SUMMER_H
summer.cpp

#include "summer.h"
#include <stdio.h>

char* getSum(int a, int b) {
    int result = a + b;
    char szResult[100];
    sprintf(szResult, "The Sum is : %d", result);
    return szResult;
}
我使用SWIG生成我的C++代码的.java包装器。
swig -c++ -java -package com.example.angelica.testfive summer.i
生成的文件如下所示:

summer_wrap.cxx
summer.java
summerJNI.java
到目前为止,据我所知,如果我没有错/可能的话,一切都很好

但当我在android studio ide中单击调试应用程序时。生成以下错误


这个错误真的把我搞糊涂了。我知道我真的忘记了一件非常重要的事情,但我自己无法弄清楚。

我怀疑这个错误是由于您将
getSum
声明为
EXTERN
但在未应用链接类的情况下定义它造成的。删除声明中的该部分或将其添加到定义中都可以解决此问题

target\u link\u库(summer,summer\u wrap)
?@JosephThomson仍面临同样的问题。我肯定我做错了对不起。我的意思是相反的。尝试将
summer
添加到
summer\u wrap
的库列表中。问题是
summer\u wrap
找不到函数
getSum
,这意味着链接/导出在某个地方失败。
summer_wrap.cxx
summer.java
summerJNI.java