2017-02-07 8 views
1

Im с использованием кодовых блоков и C++.Создание dll во время выполнения в C++

Проблема, с которой я сталкиваюсь, когда работаю над большими проектами, заключается в том, что большая часть кода идет на создание интерфейса. Требуется много времени и много исправлений.

Я хочу создать программу, которая позволяет мне редактировать код C++ из моих будущих проектов. Позволяет называть его A. A сможет создать интерфейс для моего проекта, изменив код C++. Теперь во время выполнения, когда A создает новый проект, он создает свой файл cpp и его dll-файл. Когда A добавляет кнопку для примера, она изменит свой C++ и сохранит результат в dll. Затем, когда я решаю, что мой проект закончен, я хочу превратить эту dll в exe. Я сделал все возможное, чтобы объяснить это несколькими словами. Надеюсь, вы поняли идею

Я знаю, что вы можете создать dll вручную, щелкнув новый проект, а затем выбрав Dynamic Link Libraby, но возможно ли создать dll во время выполнения? В принципе, как это:

#include <iostream> 

using namespace std; 

int main() 
{ 
    const char* str= 
    " 
    ///c++ code 
    for(i=0;i<5;i++) 
     if(i%2==0) 
      cout<<i; 
    " 

    const char* path="dllName.dll"; 
    f(str,path); 

    return 0; 
} 

ул представляет собой массив, в котором я хранить некоторые правильные C++ код Функция F ответ мне нужно от вас.

Im нового для этой темы (DLL-файлы, так что если я спросил что-то глупое и очевидно, что я прошу прощения)

программы
+0

Dll - это скомпилированный исполняемый файл. Поэтому наличие некоторого «правильного кода на C++» вам не поможет. Что именно вы пытаетесь достичь? Зачем вам нужно создавать динамические библиотеки? – Ari0nhh

+0

Я изменил свой вопрос, добавив объяснение – robertooverflow97

ответ

3

C++ не может компилировать код во время выполнения. Лучшее, что вы можете сделать, это попросить свою программу вызвать компилятор, тогда компилятор создаст вашу dll.

3

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

2

Производите исходный код в файл, а затем вызывать компилятор как внешний процесс для компиляции файла cpp.

{ 
    ofstream f("hello.cpp"); 
    f << "your hello world code"; 
} 
system("msvc.exe hello.cpp -some_dll_make_command hello.dll"); 
+0

Это тоже работает на окнах? – robertooverflow97

+0

@ robertooverflow97: Учитывая, что он вызывает MSVC, я бы сказал, что он работает на Windows _only_ – MSalters

+0

И что вы имеете в виду, когда говорите -some_dll_make_command? – robertooverflow97

0

Заканчивать LoadLibrary, FreeLibrary и GetProcAddress. Я предполагаю, что вы хотите динамически загружать/выгружать DLL во время выполнения.

 Смежные вопросы

  • Нет связанных вопросов^_^