Используя библиотеку GSL 2.4 в Visual Studio 2017 и получая эти ошибки при компиляции и запуске,
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol ___iob_func referenced in function _gsl_error
ImplementerGSL C:\Users\MyUserName\source\repos\ImplementerGSL\ImplementerGSL\gsl.lib(error.obj) 1
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol ___iob_func ImplementerGSL
C:\Users\MyUserName\source\repos\ImplementerGSL\ImplementerGSL\gsl.lib(stream.obj) 1
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol _fprintf referenced in function _gsl_error ImplementerGSL
C:\Users\MyUserName\source\repos\ImplementerGSL\ImplementerGSL\gsl.lib(error.obj) 1
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol _fprintf ImplementerGSL
C:\Users\iTzEinstein118Xx\source\repos\ImplementerGSL\ImplementerGSL\gsl.lib(stream.obj) 1
Более подробная информация о машине и проекте;
- Последнее обновление Visual Studios 2017 для Fall Creators Update
- Кодирование на C (не C++)
- GSL — это научная библиотека GNU, не путать с GSL.Microsoft.
- Последняя версия библиотеки GSL, установленная в C:/gsl. Известно, что он совместим с VS2017.
- Свойства решения были отредактированы, чтобы указать на библиотеки GSL. Дополнительные * включают каталоги: C:\gsl\include Дополнительные каталоги библиотек: C:\gsl\lib Дополнительные зависимости: gsl.lib;cblas.lib Определения препроцессора: _GSL_DLL
Моя цель в конечном итоге - использовать библиотеку для другого проекта. Однако я не могу заставить этот простой тестовый код работать. Код написан на C, в VS2017 установлены библиотеки C++ и так далее. Исходные файлы были переименованы в .c, а не в .cpp.
Мой код:
#include "stdafx.h"
#include <stdlib.h>
#include <gsl/gsl_sf_bessel.h>
int main()
{
double x, y;
x = 5.0;
y = gsl_sf_bessel_zero_J0(x);
printf("J0(%g) = %.18e\n", x, y);
return 0;
}
а затем мой заголовочный файл stdafx,
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
Сейчас я провел немало исследований и не могу найти ничего, чтобы решить эту проблему конкретно. Извините, если это дублирующийся ответ, но если есть другой вопрос, который решает эту проблему, я хотел бы узнать об этом! Спасибо за любую помощь заранее. Пс. Новичок в C, но знаком с C#.
РЕДАКТИРОВАТЬ ОБНОВЛЕНИЕ *: добавлена устаревшая библиотека, но это по-прежнему оставляет неразрешенный внешний символ __iob_func (первые две ошибки).
C:\GSL
, но ваше сообщение об ошибке указывает, что ваша сборка использует двоичные файлы GSL, установленные подC:\Users\MyUserName\source\repos\ImplementerGSL
. Вероятно, последние были построены с помощью VS2015. - person Dmitri Chubarov   schedule 17.03.2018C:\Users\iTzEinstein118Xx\source\repos\ImplementerGSL\ImplementerGSL\gsl.lib
как указание на то, чтоgsl.lib
находится в вашем локальном каталоге. (это саркастическое замечание) - person Dmitri Chubarov   schedule 17.03.2018