Как может я разрешать “ошибку LNK2019: неразрешенная внешняя ссылка”? [дубликат]

Решено в соответствии с предложением Кристиана Д. Ковачева выше.

new MarkerClusterer(this.map, this.map_markers, {
    styles:[{
        url: site_settings.template_directory + '/assets/images/marker-clusterer/m1.png',
        textSize: 12,
        width: 42,
        height: 42,
        textColor: 'white'
    }],
    maxZoom: this.map_max_zoom - 1,
    zoomOnClick: true
})  
14
задан Jason Plank 29 September 2011 в 16:00
поделиться

4 ответа

Мне не раз случалось, что я думал, что символ XXX (т.е. ? Close @ CppSQLite3DB @@ QAEXXZ ) был ] в импортируемой библиотеке, а фактический символ был __ impXXX (т.е. __imp? close @ CppSQLite3DB @@ QAEXXZ ).

Причина ошибки компоновщика должна быть найдена на этапе компиляции: компилятор сгенерирует символ ? close @ CppSQLite3DB @@ QAEXXZ для импорта, где должен сгенерировать __imp? close @ CppSQLite3DB@@ QAEXXZ . Это часто означает, что в самом объявлении функции не было __ declspec (dllimport) . Это может быть вызвано тем, что какой-то символ препроцессора не определен. Или __ declspec там вообще нет ...

9
ответ дан 1 December 2019 в 08:43
поделиться

Вам нужно либо связать библиотеку кода проекта SQLite со своим исполняемым файлом, либо напрямую включить исходные файлы в ваш проект. (Что вы сделали?)

1
ответ дан 1 December 2019 в 08:43
поделиться

Я бы выполнил следующие шаги:

  1. подумайте о том, из какой библиотеки или файла .obj вы ожидаете, что будет экспортирован символ.

  2. проверьте, действительно ли экспортирует этот самый символ (проверьте по символам). Иногда отличается соглашение о вызовах.

  3. проверьте, известна ли компоновщику библиотека, которую вы ожидаете содержать символ - сначала проверьте наличие «дополнительных библиотек», затем проверьте, действительно ли библиотека найдена (я обычно делаю это используя filemon.exe из sysinternals, и найдите link.exe, чтобы открыть файл lib.)

Немного подумав, вы можете обнаружить, что ваш проект библиотеки , а не будет экспортировать искомую функцию. Эта функция находится в базе данных lib. Вы должны добавить эту библиотеку в свой основной проект. Нет смысла добавлять его в проект статической библиотеки.

1
ответ дан 1 December 2019 в 08:43
поделиться

Компилятор и компоновщик не будут связывать одну библиотеку с другой (если она не является DLL). Вам необходимо указать обе библиотеки (cppsqlite3.lib и вашу собственную статическую библиотеку) в вашем основном проекте.

1
ответ дан 1 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

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