Ich versuche, native Android-Anwendungsbeispiel mit Android Studio 2.3 zu bauen, aber an einem Punkt stecken. Der Code des Projekts ist alsunzufriedener Hinweis auf Funktion in Android-Studio mit swig
folgt 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;
}
CMakeList.txt
cmake_minimum_required(VERSION 3.4.1)
add_library(summer
SHARED
src/main/cpp/summer.cpp)
add_library(summer_wrap
SHARED
src/main/cpp/summer_wrap.cxx)
find_library(log-lib
log)
target_link_libraries(summer_wrap
${log-lib})
ich swig bin mit dem .java-Wrapper für meinen C++ Code zu generieren.
swig -c++ -java -package com.example.angelica.testfive summer.i
Dateien erzeugt werden, sind wie folgt:
summer_wrap.cxx
summer.java
summerJNI.java
Bis hier alles wie pro mein Wissen gut geht, wenn ich nicht falsch bin/vielleicht.
Aber wenn ich auf Debug-App im Android Studio IDE klicke. Folgefehler wird generiert.
dieser Fehler vermasselst mich wirklich. Ich weiß, dass ich wirklich etwas wirklich Wichtiges vergesse, aber ich bin nicht in der Lage, es selbst herauszufinden.
'target_link_libraries (Sommer, Sommer_Wrap)'? –
@JosephThomson immer noch das gleiche Problem. Ich bin sicher, dass ich es falsch mache – Angelica
Entschuldigung. Ich meinte es andersherum. Versuchen Sie, 'summer' zu der Liste der Bibliotheken für' summer_wrap' hinzuzufügen. Das Problem ist, dass 'summer_wrap' die Funktion' getSum' nicht finden kann, was bedeutet, dass das Verknüpfen/Exportieren irgendwo fehlschlägt. –