2017-02-07 16 views
1

ImコードブロックとC++を使用しています。実行時にC++でDLLを作成

大きなプロジェクトで作業するときに問題になるのは、多くのコードがインターフェイスを作成することです。それは多くの時間と多くの修正バグを必要とします。

将来のプロジェクトからC++コードを編集できるプログラムを作成したいと思います。それをAと呼ぶことができます。Aは、C++コードを変更することでプロジェクトのインターフェースを作成することができます。今、実行時にAが新しいプロジェクトを作成すると、そのプロジェクトはcppファイルとdllファイルを作成します。 Aがexempleのボタンを追加すると、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; 
} 

strが、私はいくつかの正しいのC++コード f関数は、私はあなたから必要な答えで保存した配列です。

このトピックに新しいイム(dllファイル、私は愚かで何かを明らかに尋ねた場合、私は謝罪)

+0

Dllはコンパイルされた実行可能ファイルです。だから、いくつかの "正しいC + +コード"を持っているとあまり助けにならないでしょう。正確に何を達成しようとしていますか?なぜあなたはダイナミックライブラリランタイムを作成する必要がありますか? – Ari0nhh

+0

私はexplinationを追加して私の質問を変更しました – robertooverflow97

答えて

3

A C++プログラムは、実行時にコードをコンパイルすることはできません。あなたができる最善のことは、あなたのプログラムにコンパイラを呼び出すよう依頼することです。コンパイラはあなたのDLLを作成します。

3

strの内容を一時ファイルに書き込んで、このファイルを入力として使用してプログラムでコンパイラを実行させることができます。

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

チェックアウトLoadLibraryFreeLibrary、およびGetProcAddress。私はあなたが望むものは、実行時にDLLを動的にロード/アンロードすることを前提としています。

関連する問題