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

Компиляция исходного кода в работающей программе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ SDL2 BlitScaled и прозрачность - масштабирование изображения http://www.cyberforum.ru/cpp-beginners/thread1223906.html
Здравствуйте. Пару дней назад начал работать с SDL2, возникла некоторая проблема, никак не могу масштабировать изображение с прозрачностью. /* * File: main.cpp * Author: vortex * * Created on 7 Июль 2014 г., 0:23 */ #include <iostream> #include "SDL2/SDL.h"
C++ Как прочитать числа из бинарного файла Нужна помощь. Пытаюсь читать из бинарного файла простые числа, но ничего не читается. Файл взят тут, там же и его описание, через Hex editor он просматривается. Мой код: #include <iostream> std::ifstream primes("primes.32b", std::ios::binary); char buf; primes.getline(buf,4); std::cout<<" buf = "<<buf<<std::endl; Вы водится символ сердечка и всё. http://www.cyberforum.ru/cpp-beginners/thread1223905.html
C++ Преобразовать любое значение в строку
Привет. У меня есть примерно такая функция: template<typename T> std::string ToString(T value) { return std::to_string(value); }она работает на стандартных типах, ну это понятно. Как сделать чтобы код хотя бы мог компилироваться, если я передам в нее (в эту функцию) например свой класс? Спасибо. error C2665: 'std::to_string' : none of the 9 overloads could convert all the argument types
C++ Написать программу, вычисляющую функцию, представленную в виде ряда с заданной точностью
Ребят помогите пожалуйста. Написать на языке СИ++ Составить программу, которая рассчитывает таблицу значений этой функции в указанном диапазоне значений x0 — xk с заданным шагом h. Величины x0, xk, h вводить с клавиатуры. представленную в виде ряда с заданной точностью e=0,001. / С++ для начинающих
C++ Некорректная работа операции сложения векторов в классе http://www.cyberforum.ru/cpp-beginners/thread1223879.html
Объясните мне пожалуйста, почему операция сложения векторов работает неккоректно! Дело в том, что после выполнения операции, каким-то чудом изменяется и вектор и при выводе векторов один вектор изменяется(его координаты становится ужасными числами...) Я никак не меняю сами векторы, так в чем проблема? Вот код: Это 1 файл odm.cpp #include "odm.h" #include "math.h" int odm::kol=0;
C++ Построение логического вектора по правилу Помогите пожалуйста с задачкой. Даны действительные x и матрица A(n,n), n<=20. Разработать программу которая строит логический вектор X(n) по правилу: если максимальный элемент i-той строки не превышает х, тогда Х(і)=true, иначе - Х(і)=false. подробнее

Показать сообщение отдельно
vlinx
1 / 1 / 0
Регистрация: 27.06.2014
Сообщений: 74
08.07.2014, 16:38  [ТС]     Компиляция исходного кода в работающей программе
DrOffset, действительно) спасибо!
сейчас попробую сделать чтобы было все динамически.

Добавлено через 47 минут
Получилось следующее:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main()
{
    //Загрузка введенного пользователем кода в строке
    std::string input_memo_text = "int get_my_inn(int x, int y){ int z = 4; return x * y - z; }";
    input_memo_text += "\n\r";
 
    //Парсим строку на объявление и определение
    std::size_t end_declaration_pos = input_memo_text.find_first_of("{");
    std::string declaration = input_memo_text.substr(0, end_declaration_pos) + ";\n";
    std::string definition = input_memo_text;
 
 
 
    //Сохранение кода в файлы .h .cpp для компиляции DLL
 
    //хедер
    ofstream dll_h;
    dll_h.open("D:\\example_dll.h", std::ios::out);
 
    dll_h << "#ifndef EXAMPLE_DLL_H #define EXAMPLE_DLL_H #ifdef __cplusplus extern \"C\" { #endif #ifdef BUILDING_EXAMPLE_DLL #define EXAMPLE_DLL __declspec(dllexport) #else #define EXAMPLE_DLL __declspec(dllimport) #endif #ifdef __cplusplus } #endif" << std::endl;
    dll_h << declaration << std::endl;
    dll_h << "#endif" << std::endl;
    dll_h.close();
 
 
 
    //cpp
    ofstream dll_cpp;
    dll_cpp.open("D:\\example_dll.cpp", std::ios::out);
 
    dll_cpp << "#include <iostream>" << std::endl;
    dll_cpp << "#include \"example_dll.h\"" << std::endl;
    dll_cpp << definition << std::endl;
    dll_cpp.close();
 
 
 
 
    //string path_compiler = "C:\\strawberry\\c\\bin\\g++.exe g++";
   // string cmd1 = "g++ -c -DBUILDING_EXAMPLE_DLL example_dll.cpp";
//*
 
    //Создание DLL
    STARTUPINFO startupInfo;
    PROCESS_INFORMATION processInformation;
 
    memset(&processInformation, 0, sizeof(processInformation));
    memset(&startupInfo, 0, sizeof(startupInfo));
    startupInfo.cb = sizeof(startupInfo);
 
 
    TCHAR czCommandLine1[] = "C:\\strawberry\\c\\bin\\g++ -c -DBUILDING_EXAMPLE_DLL D:\\example_dll.cpp -o D:\\example_dll.o";
    CreateProcess(NULL, czCommandLine1, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInformation);
    WaitForSingleObject(processInformation.hProcess, INFINITE);
 
    TCHAR czCommandLine2[] = "C:\\strawberry\\c\\bin\\g++ -shared -o D:\\example_dll.dll D:\\example_dll.o -Wl,--out-implib,D:\\libexample_dll.a";
    CreateProcess(NULL, czCommandLine2, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInformation);
    WaitForSingleObject(processInformation.hProcess, INFINITE);
 
 
    CloseHandle(processInformation.hProcess);
    CloseHandle(processInformation.hThread);
 
 
    //И подгружаем  dll
    HINSTANCE h;
    int (*func_from_dll) (int, int);
 
    h = LoadLibrary("d:\\example_dll.dll");
 
    if (!h)
    {
        std::cout << "dll not found\n";
        return 5;
    }
 
    func_from_dll = (int (*) (int, int)) GetProcAddress(h, "get_my_inn");
 
    if (!func_from_dll)
    {
        printf("function not found\n");
        return 13;
    }
 
    int generated_value = func_from_dll(5,6);
 
    std::cout << generated_value << "\n !!!!!";
 
    FreeLibrary(h);
 
    return 0;
}
1) Сохраним код, который ввел пользователь в строку
2) Разобьем и запишем эту строку на определение и объявление введенной в MEMO ф-ии
3) Компилим DLL
4) Загрузка DLL и вызов ф-ии

Сейчас непойму, почему при компиляции dll выпадают ворнинги: extra tokens at #ifndef derective (example_dll.h) , то ли пробелы не нарвятся, то ли кодировка файла... в результате : function not found

Добавлено через 5 минут
и почему-то размер dll стал 471кб, а было 14
 
Текущее время: 01:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru