Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | | | |
Про MSDN знаю, но инет не халявный и я даже не знаю что искать 01.03.05 22:17 Число просмотров: 1844
Автор: hotice Статус: Незарегистрированный пользователь
|
|
<programming>
|
Вопрос по GMP 14.02.05 22:45
Автор: hotice Статус: Незарегистрированный пользователь Отредактировано 14.02.05 22:48 Количество правок: 1
|
Вообщем я скачал по адресу http://www.cs.nyu.edu/exact/core/gmp/ готовые библиотеки под VC++, но у меня возникли проблемы когда я попытался откомпилить тестовый пример. Может кто знает как этой штукой пользоваться, а то я с английским не очень дружу.
|
|
исправлюсь... 16.02.05 22:07
Автор: hotice Статус: Незарегистрированный пользователь
|
Был не прав, исправлюсь…
Ситуация обстоит так: программу пишу в Visual C++ .Net, руководство по использованию GMP изучил, но ответа не нашёл. С указанной ссылки взял gmp-static-vc-4.1.2.zip для Visual C++ 6.0 & Visual C++ .Net
Из руководства взял первую прогу:
void
foo (mpz_t result, const mpz_t param, unsigned long n) {
unsigned long i;
mpz_mul_ui (result, param, n);
for (i = 1; i < n; i++)
mpz_add_ui (result, result, i*7);
}
int main (void) {
mpz_t r, n;
mpz_init (r);
mpz_init_set_str (n, "123456", 0);
foo (r, n, 20L);
gmp_printf ("%Zd\n", r);
return 0;
}
добавил #include <stdio.h>
#include <gmp.h> как сказана в руководстве
и при компиляции получил c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\gmp.h(1565): warning C4146: unary minus operator applied to unsigned type, result still unsigned
gmp-test fatal error LNK1120: 5 unresolved externals
gmp-test error LNK2019: unresolved external symbol __imp____gmpz_mul_ui referenced in function "void __cdecl foo(struct __mpz_struct * const,struct __mpz_struct const * const,unsigned long)" (?foo@@YAXQAU__mpz_struct@@QBU1@K@Z)
gmp-test error LNK2019: unresolved external symbol __imp____gmpz_init_set_str referenced in function _main
gmp-test error LNK2019: unresolved external symbol __imp____gmpz_init referenced in function _main
gmp-test error LNK2019: unresolved external symbol __imp____gmpz_add_ui referenced in function "void __cdecl foo(struct __mpz_struct * const,struct __mpz_struct const * const,unsigned long)" (?foo@@YAXQAU__mpz_struct@@QBU1@K@Z)
gmp-test error LNK2019: unresolved external symbol __imp____gmp_printf referenced in function _main
|
| |
Я всё таки нашёл ошибку...:) 09.03.05 22:18
Автор: hotice Статус: Незарегистрированный пользователь
|
А дело было н в линкере, а в подключеннии gmp.h, вместо #include <gmp.h>, надо поставить #include "gmp.h" и всё начинает работать нормально без ошибок...:)
Всем спасибо большое!:)
P.S.Вё гениальное просто
|
| |
Подлючить либу надо 17.02.05 11:31
Автор: amirul <Serge> Статус: The Elderman
|
Для этого либо в текст программы включить строку
#pragma comment(lib, "gmp.lib")
Либо прописать эту либу в настройках
Естественно эту самую gmp.lib надо положить так, чтобы линкер ее нашел (общеIDE-шные пути прописываются в Options..., а пути для конкретного проекта - в его настройках). Для тестовых программок легче всего положить эту либу прямо в каталог с проектом
|
| |
так видимо библиотеку gmp надо как-то в VC подстегнуть к проекту 17.02.05 09:29
Автор: LLL <Алексей> Статус: Member
|
|
| | |
Пробую ... но... 19.02.05 22:42
Автор: hotice Статус: Незарегистрированный пользователь
|
Вставил в пограмму #Pragma но ничего неизменилось. А когда подключал либу увидел следуюшие в Linker -> Command line:
/OUT:"Debug/gmp-test.exe" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Program Files\Microsoft Visual Studio .NET\Vc7\lib\gmp.lib" /DEF:"C:\WINNT\system32\gmp.lib" /DEBUG /PDB:"Debug/gmp-test.pdb" /SUBSYSTEM:CONSOLE /MACHINE:IX86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "\WINNT\system32\gmp.lib"
но так у меня ни чего и не вышло. Может это из-за того что хоть у меня и MS Visual Studio .Net Но С++ у меня 7.0. В логе на адреса посмотрите
|
| | | |
Я бы порекомендовал покурить rtfm [update] 21.02.05 13:02
Автор: amirul <Serge> Статус: The Elderman Отредактировано 21.02.05 14:02 Количество правок: 1
|
> Вставил в пограмму #Pragma но ничего неизменилось. А когда > подключал либу увидел следуюшие в Linker -> Command > line: > /OUT:"Debug/gmp-test.exe" /INCREMENTAL /NOLOGO > /LIBPATH:"C:\Program Files\Microsoft Visual Studio > .NET\Vc7\lib\gmp.lib" /DEF:"C:\WINNT\system32\gmp.lib" > /DEBUG /PDB:"Debug/gmp-test.pdb" /SUBSYSTEM:CONSOLE > /MACHINE:IX86 kernel32.lib user32.lib gdi32.lib > winspool.lib comdlg32.lib advapi32.lib shell32.lib > ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib > "\WINNT\system32\gmp.lib"
> но так у меня ни чего и не вышло. Может это из-за того что > хоть у меня и MS Visual Studio .Net Но С++ у меня 7.0. В > логе на адреса посмотрите Как минимум три прогона. В пути к библиотекам указана сама библиотека. Эта же библиотека (но уже в system32) указана в качестве DEF-файла (зачем?). И последняя (не совсем ошибка, но потенциально опасная настройка) - путь к библиотеке указан от корня ТЕКУЩЕГО диска (но тоже почему то в system32) если система и visual studio находятся на одном диске - ничего страшного. Если на разных - линковаться не будет. И во вторых (в том же месте), на фига давать полный путь к библиотеке линкера?
В общем покури мануалы в части работы с линкером и сможешь исправить все сам (сразу скажу, что именно с указанным тобой дистрибутивом gmp из библиотеки core я работал - там все отлично компилится)
------------------
Тем более что тут: http://www.bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=2&m=118642
Я привел достаточно информации для разрешения проблемы
|
| | | | |
С прогонами всё сделал... 22.02.05 22:16
Автор: hotice Статус: Незарегистрированный пользователь
|
Вообщем пути я убрал pragm'у оставил, но мануалов у меня нет, вообщем с линкерол я не разобрался ошибки остались... Подскажите какие мануалы, в плане содержания нужны, если не трудно с ссылкой или названием...
З.Ы. Я понял что по линкеру мануал... но что ??? именно
|
| | | | | |
Дык прагму оставить, а либу положить в каталог с проектом (туда где валяются исходники) 23.02.05 11:39
Автор: amirul <Serge> Статус: The Elderman
|
Как я уже и сказал
> Вообщем пути я убрал pragm'у оставил, но мануалов у меня > нет, вообщем с линкерол я не разобрался ошибки остались... > Подскажите какие мануалы, в плане содержания нужны, если не > трудно с ссылкой или названием... Мануал по всем виндовым продуктам называется MSDN
|
| | | | | | |
Про MSDN знаю, но инет не халявный и я даже не знаю что искать 01.03.05 22:17
Автор: hotice Статус: Незарегистрированный пользователь
|
|
| | | | | | |
прагму оставил,либу положил 26.02.05 22:19
Автор: hotice Статус: Незарегистрированный пользователь
|
> Мануал по всем виндовым продуктам называется MSDN
Прагму оставил и либу в папку кинул, всё равно ошибки у линкера, пробывал с ликером поэксперементировать, но что-то ни чего не вышло :(
Про MSDN знаю, но инет не халявный и я даже не знаю что искать
|
|
Я знаю 15.02.05 11:27
Автор: amirul <Serge> Статус: The Elderman
|
> Вообщем я скачал по адресу > http://www.cs.nyu.edu/exact/core/gmp/ готовые библиотеки > под VC++, но у меня возникли проблемы когда я попытался > откомпилить тестовый пример. Может кто знает как этой > штукой пользоваться, а то я с английским не очень дружу. Я знаю. И с английским дружу. Еще вопросы есть? За подробностями - по ссылке, данной DamNet-ом
|
|
Линк внутри 14.02.05 23:13
Автор: DamNet <Denis Amelin> Статус: Elderman
|
Жать мышой сюда
|
|
|