Форум программистов, компьютерный форум CyberForum.ru

Не получается скомпилировать и использовать файл .lib - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнить два поля узла http://www.cyberforum.ru/cpp-beginners/thread966158.html
Имеется двусвязный список фишек домино. В нём два поля: левое и правое числа фишки домино. Нужно пробежать такой цикл, чтобы выяснить соответствует ли правилам игры цепочка: т.е. равно ли правое поле текущей фишки (second_f) левому полю следующей фишки (first_f). Пробовал этот, что-то не так while(flow_number) { buf = flow_number; while(buf = buf -> next)
C++ Удаление строк (символов) из файла Подскажите, пожалуйста как реализовать программно (1) исключение из исходного текстового файла подстрок, являющихся цепочками заданного языка. И (2) оставляет в исходном текстовом файле только цепочки заданного языка. Вот код для задания символов языка: #pragma hdrstop #pragma argsused #include <tchar.h> #include <iostream.h> #include <stdio.h> #include <string> http://www.cyberforum.ru/cpp-beginners/thread966149.html
C++ не получается, хоть убеи :С
___________________________ Stellaj.txt : ___________________________ StellajZ abc_sklad Velosiped 3.4 2 polka7 KUB
C++ Ошибка при работе с объектами
Доброго времени суток! Я написал программу для работы с матрицами. При умножении происходит следующее: Matrix M3 = M1 * M2; // после этого M3 = M1. Отладка показала, что возвращаемый из оператора * объект уничтожается, а затем копирующий конструктор копирует M1 в M3. Помогите, пожалуйста, разобраться. Объявление класса #pragma once
C++ Нахождения цикла в орграфе http://www.cyberforum.ru/cpp-beginners/thread966102.html
Задан орграф списком смежности, при этом его вершинами являются строчные латинские символы. Описание выглядит примерно так: <описание i-ой вершины> ::= <символ, записанный в i-й вершине> <число di дуг, исходящих из i-й вершины> <номер вершины, в которую ведёт первая дуга>...<номер вершины, в которую ведёт di-ая дуга> Теперь что касается самого вопроса. Как в таком графе найти...
C++ Посчитать количество различных элементов массива Собственно задача обозначена в заглавии темы. НЕ могу понять что неправильно в моем говнокоде (постоянно вывадит 100). Подскажите пожалста что нетак? for (iii = 0; iii <100; iii++) { tmp=0; for (jjj = 0; jjj <100; jjj++) {if (arrayStringSum==arrayStringSum); tmp++; } подробнее

Показать сообщение отдельно
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314

Не получается скомпилировать и использовать файл .lib - C++

01.10.2013, 01:35. Просмотров 655. Ответов 10
Метки (Все метки)

Хаюшки, мечтал сделать свою мини-библиотечку и за одно научиться работать с lib файлами, но нормального руководства нет, все либо дотошно пытаются объяснить как сделать ее в Wizard'е вижлы, либо как подключать готову d3dx.lib например.
Подкорректируйте мои начинания, в мастере VS9 функции объявлены как extern может ошибка в этом ? :

Заголовочный файл converter.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
 
#define WIN32_LEAN_AND_MEAN
 
#include <boost/lexical_cast.hpp>
#include <string>
#include <sstream>
#include <iostream>
 
 
                   inline std::string  ToString(const bool &value);
template <class T> inline std::string  ToString(const T &value);
template <class T> inline std::string  ToString(const T &value, const int &size_upon_point);
                   inline std::wstring ToWString(const bool &value);
template <class T> inline std::wstring ToWString(const T &value);
template <class T> inline std::wstring ToWString(const T &value, const int &size_upon_point);
 
inline int    ToInt  (const std::string & str);
inline float  ToFloat(const std::string & str);
inline double Round  (double value,int count);

Модуль converter.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "converter.h"
 
inline std::string ToString(const bool &value){if (value) return "true"; else return "false";}
inline std::wstring ToWString(const bool &value){if (value) return L"true"; else return L"false";}
template <typename T>
inline std::string  ToString (const T &value){return boost::lexical_cast<std::string>(value);}
template <typename T>
inline std::wstring ToWString(const T &value){return boost::lexical_cast<std::wstring>(value);}
 
inline int ToInt(const std::string & str)
{
    return boost::lexical_cast<int>(str.c_str());
}
inline float ToFloat(const std::string & str)
{
    return boost::lexical_cast<float>(str.c_str());
}
 
template <typename T>
inline std::string ToString(const T &value, const int &size_upon_point)
{
    std::string result = boost::lexical_cast<std::string>(value);
    int count = result.length();
    int i = 0;
    int COUNT_BEFORE_DOT = 4;
    while (i < count)
    {
        if (result.at(i) == L'.') break;
        i++;
    }
 
    if ( (count - i) > size_upon_point)
    {
        result.resize(i+size_upon_point);
    }
 
    return result;
}
 
template <typename T>
inline std::wstring ToWString(const T &value, const int &size_upon_point)
{
    std::wstring result = boost::lexical_cast<std::wstring>(value);
    int count = result.length();
    int i = 0;
    int COUNT_BEFORE_DOT = 4;
    while (i < count)
    {
        if (result.at(i) == L'.') break;
        i++;
    }
 
    if ( (count - i) > size_upon_point)
    {
        result.resize(i+size_upon_point);
    }
 
    return result;
}
 
inline double Round(double value,int count)
{
    double degree = pow(10.0,count);
    value *= degree;
    double tail = value - static_cast<int>(value);
    if ( tail >= 0.5 )
        tail = 1;
    else
        tail = 0;
    value = static_cast<int>(value+tail);
    value /= degree;
 
    return value;
}
Линкуется и создается без ошибок:
Кликните здесь для просмотра всего текста

1>------ Rebuild All started: Project: converter, Configuration: Release Win32 ------
1>Deleting intermediate and output files for project 'converter', configuration 'Release|Win32'
1>Compiling...
1>converter.cpp
1>Creating library...
1>Build log was saved at "file://c:\Users\vbloodv\Documents\Visual Studio 2008\Projects\converter\Release\BuildLog.htm"
1>converter - 0 error(s), 0 warning(s)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========


А вот при подключении и непосредственном использовании получаю ошибку линковки:
Кликните здесь для просмотра всего текста

1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>Linking...
1>main.obj : error LNK2019: unresolved external symbol "double __cdecl Round(double,int)" (?Round@@YANNH@Z) referenced in function _main
1>C:\Users\vbloodv\Documents\Visual Studio 2008\Projects\Test\Debug\Test.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Users\vbloodv\Documents\Visual Studio 2008\Projects\Test\Debug\BuildLog.htm"
1>Test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
C++
1
2
3
4
5
6
7
8
9
#include <string>
#include <iostream>
#include "converter.h"
int main()
{
    double ss = Round(124.124,2);
    std::cout << ss << std::endl;
    return 0;
}
1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>Linking...
1>main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl ToString<int>(int const &)" (??$ToString@H@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABH@Z) referenced in function _main
1>C:\Users\vbloodv\Documents\Visual Studio 2008\Projects\Test\Debug\Test.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Users\vbloodv\Documents\Visual Studio 2008\Projects\Test\Debug\BuildLog.htm"
1>Test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped =========
C++
1
2
3
4
5
6
7
8
9
#include <string>
#include <iostream>
#include "converter.h"
int main()
{
    std::string ss = ToString(12);
    std::cout << ss.c_str() << std::endl;
    return 0;
}
правда заголовочный файл я немного изменил:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
 
                   inline std::string  ToString(const bool &value);
template <class T> inline std::string  ToString(const T &value);
template <class T> inline std::string  ToString(const T &value, const int &size_upon_point);
                   inline std::wstring ToWString(const bool &value);
template <class T> inline std::wstring ToWString(const T &value);
template <class T> inline std::wstring ToWString(const T &value, const int &size_upon_point);
 
inline int    ToInt  (const std::string & str);
inline float  ToFloat(const std::string & str);
inline double Round  (double value,int count);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru