Ошибка Android Studio DisplayMessageAcivity.java [дубликат]

Невозможность связывания с соответствующими библиотеками / объектными файлами или компиляция файлов реализации

Обычно каждая единица перевода генерирует объектный файл, содержащий определения символов, определенных в этой единицы перевода. Чтобы использовать эти символы, вам необходимо связать эти объектные файлы.

В разделе gcc вы должны указать все объектные файлы, которые должны быть связаны вместе в командной строке, или скомпилировать файлы реализации вместе.

g++ -o test objectFile1.o objectFile2.o -lLibraryName

Здесь libraryName - это просто имя библиотеки, без добавления к платформе. Так, например, в файлах библиотеки Linux обычно называют libfoo.so, но вы должны писать только -lfoo. В Windows этот же файл можно назвать foo.lib, но вы будете использовать тот же аргумент. Возможно, вам придется добавить каталог, в котором эти файлы можно найти, используя -L‹directory›. Обязательно не записывайте пробел после -l или -L.

Для XCode: добавьте пути поиска заголовка пользователя -> добавьте путь поиска библиотеки -> перетащите фактическую ссылку библиотеки в

В MSVS файлы, добавленные в проект, автоматически связывают их объектные файлы, и будет создан файл lib (в общем использовании). Чтобы использовать символы в отдельном проекте, вам нужно будет добавить файлы lib в параметры проекта. Это делается в разделе Linker свойств проекта в Input -> Additional Dependencies. (путь к файлу lib должен быть добавлен в Linker -> General -> Additional Library Directories). При использовании сторонней библиотеки, которая предоставляется с файлом lib, отказ в этом обычно приводит к ошибке.

Также может случиться так, что вы забудете добавить файл в компиляцию, и в этом случае объектный файл не будет сгенерирован. В gcc вы должны добавить файлы в командную строку. В MSVS добавление файла в проект заставит его скомпилировать его автоматически (хотя файлы могут, вручную, быть отдельно исключены из сборки).

В программировании Windows контрольный знак, который вы не связывали необходимая библиотека состоит в том, что имя неразрешенного символа начинается с __imp_. Посмотрите имя функции в документации, и она должна сказать, какую библиотеку вам нужно использовать. Например, MSDN помещает информацию в поле внизу каждой функции в разделе «Библиотека».

2
задан user2900761 20 October 2013 в 20:01
поделиться

8 ответов

Включите это в свой основной класс активности

public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

Это сработало для меня благодаря https://www.androidpit.com/forum/632071/error-cannot-find-symbol -переменное-экстра-сообщение-в-андроид-студии

7
ответ дан Baum mit Augen 28 August 2018 в 17:15
поделиться

Компилятор говорит вам, что в вашей MainActivity нет такой переменной, как EXTRA_MESSAGE. Поэтому вам нужно объявить его как static и public, чтобы получить способ написания вашего кода.

Добавьте это в свой MainActivity:

public final static String EXTRA_MESSAGE = "someString";

а также вам нужно импортировать MainActivity, если эти две активности не находятся в одном пакете.

4
ответ дан Carnal 28 August 2018 в 17:15
поделиться

в MainActivity.java измените

intent.putExtra(EXTRA_MESSAGE, message);

на

intent.putExtra("EXTRA_MESSAGE", message);

и в DisplayMessageActivity.java замените

String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

на

String message = intent.getStringExtra("EXTRA_MESSAGE");

Это то, что в конечном итоге работает для меня, так что да ...

3
ответ дан Jay 28 August 2018 в 17:15
поделиться

просто измените строку в MainActivity:

intent.putExtra(MainActivity.EXTRA_MESSAGE,"your_msg");

с

intent.putExtra("EXTRA_MESSAGE","your_msg");

, потому что это

 intent.putExtra("KEY","VALUE");
0
ответ дан Martin Tournoij 28 August 2018 в 17:15
поделиться

просто измените строку в MainActivity

intent.putExtra(MainActivity.EXTRA_MESSAGE,"your_msg");

с

intent.putExtra("EXTRA_MESSAGE","your_msg");

, потому что это

 intent.putExtra("KEY","VALUE");

не будет изменений в DisplayMessageActivity

String message = intent.getStringExtra("EXTRA_MESSAGE");
1
ответ дан Rajeshwar Reddy 28 August 2018 в 17:15
поделиться

Когда когда-либо будет вызвано действие, у нас будет намерение вызова, мы можем получить доступ к этому намерению внутри действия. Теперь мы можем поставить пару ключевых значений с намерением.

Теперь в вашей активности

 Intent intent = getIntent();
 String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
 setContentView(R.layout.activity_display_message);

вы получаете доступ к этому намерению здесь и получаете доступ к строковому значению из этого намерения.

Из Mainnactivity вы можете вызвать это действие

, используя код, подобный этому

Intent intent=new Intent(this,DisplayActivity.Class);
// put some msg in your intent like this
intent.putExtra(MainActivity.EXTRA_MESSAGE,"your_msg");
startActivity(intent);

вы получите это сообщение в DisplayActivity, и проблема исчезнет.

У вас должно быть объявление строки EXTRA_MESSAGE в MainActivity

Просто поместите

public Static String EXTRA_MESSAGE="your_message";
1
ответ дан Rajnish Mishra 28 August 2018 в 17:15
поделиться

Включите следующий код в свой основной вид деятельности:

public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
0
ответ дан user7294900 28 August 2018 в 17:15
поделиться

Лучше всего, используйте это

import static com.example.myfirstapp.MainActivity.EXTRA_MESSAGE;

-> измените com.example.myfirstapp на имя созданного вами пакета -> MainActivity - это класс, который вы объявили в сообщении. соответственно

0
ответ дан YouKnowWhoIAm 28 August 2018 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: