PDA

View Full Version : تبدیل cpp به exe



ahmad_201494
پنج شنبه 30 بهمن 1393, 11:51 صبح
سلام
من می خوام برنامه ای بنوسیم که
فایل cpp رو از کاربر بگیره و تبدیلش کنه
به exe و به کاربر تحویلش بده.
dll هست که این کار رو انجام بده
یا اصلا باید چکار کنم؟
ممنون

rahnema1
پنج شنبه 30 بهمن 1393, 12:44 عصر
سلام،برنامه هایی وجود داره به نام کامپایلر که این کار را انجام میدن
مثل ++visual c یا ++g یا clang یا turbo c

ahmad_201494
پنج شنبه 30 بهمن 1393, 14:03 عصر
چجور تو برنامم ازش استفاده کنم؟

rahnema1
پنج شنبه 30 بهمن 1393, 14:06 عصر
لازم نیست شما اون برنامه را بنویسید چون اونها قبلا نوشته شده و شما فایل cpp را به اونها بدید خودشون بهتون exe تحویل میدن

ahmad_201494
پنج شنبه 30 بهمن 1393, 14:12 عصر
من خودم یه جورایی میخوام کامپایلر درست کنم برا همین میخوام از یک واسط که کامپایلر c++ هست استفاده کنم
اول زبان مورد نظرمو برای سی پلاس پلاس ترجمه میکنم بعد سی پلاس پلاس برام کامپایل میکنه
راهنماییم کن ممنون

rahnema1
پنج شنبه 30 بهمن 1393, 14:22 عصر
درست کردن کامپایلر به این سادگی نیست. نمیدونم به چه زبانی برنامه نویسی می کنید. حالا مثلا برای اجرای ++g این جور عمل می کنیم

#include <stdlib.h>
int main()
{
system("g++ myfile.cpp");
}

ahmad_201494
پنج شنبه 30 بهمن 1393, 14:35 عصر
فک کنم منظورمو خوب متوجه نشدین
من یک گرامر دارم که توش مثلا in a داره و این تو c++ یعنی

int a;
cin>>a;
حالا من فایل تکستی که توش برنامم به زبان بالا (in a) هست رو باز میکنم و بعد کد ها رو تبدیل به کدهای c++ می کنم وبعد برنامه رو کامپایل و ذخیرش میکنم
برا همین می خوام تو خود برنامه کدو بگیره و بعد فایل اجرایی شو بهم بده.

rahnema1
پنج شنبه 30 بهمن 1393, 14:43 عصر
حالا من فایل تکستی که توش برنامم به زبان بالا (in a) هست رو باز میکنم

با چی باز می کنید؟


و بعد کد ها رو تبدیل به کدهای c++ می کنم

چه جوری این کار را می کنید؟ برنامه ای برای این کار نوشتید؟ به چه زبانی؟


وبعد برنامه رو کامپایل و ذخیرش میکنم

با چی کامپایل می کنید؟


برا همین می خوام تو خود برنامه کدو بگیره و بعد فایل اجرایی شو بهم بده.

کدوم برنامه؟ به چه زبانی؟
ابتدا کدی که تبدیل شده را در یک فایل cpp ذخیره می کنید و با همون دستور به ++g می دهید

ahmad_201494
پنج شنبه 30 بهمن 1393, 14:55 عصر
من الان با ویژوال استدیو کار به زبان C++‎ کار میکنم
تو برنامم می نویسم مثلا فایل text.txt رو از دسکتاپ با fopen باز کنه
بعد محتوای توشو می خونه مثلا توش نوشته:(زبونش من درآوردیه ):لبخندساده:


in a
in b
a=a+b
out a

حالا خط به خط براش به زبان C++‎‎‎‎‎‎‎‎‎‎ معادل میسازه
(که من بهش گفتم معادلش چی میشه)
که در نهایت تبدیل میشه به :


int a;
cin>>a;
int b;
cin>>b;
a=a+b;
cout<<a;

حالا میخوام برنامه خودش این کدی که تبدیلش کرده رو برام کامپایل هم کنه
و بعد مثلا به نام 1.exe توی دکستاپ ذخیرش کنه.
چجوری انجام بدم.

rahnema1
پنج شنبه 30 بهمن 1393, 15:11 عصر
تست نکردم اما قاعدتا باید یک فایل exe به نام myfile.exe در همون فولدری که برنامه تبدیل قرار داره ایجاد بشه

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

int main ()
{
ofstream myfile;
myfile.open ("myfile.cpp");
myfile << "#include <iostream>" << "\n";
myfile << "using namespace std;"<< "\n";
myfile << "int main()"<< "\n";
myfile << "{"<< "\n";
myfile << "int a;"<< "\n";
myfile << "cin>>a;"<< "\n";
myfile << "int b;"<< "\n";
myfile << "cin>>b;"<< "\n";
myfile << "a=a+b;"<< "\n";
myfile << "cout<<a;"<< "\n";
myfile << "return 0;"<< "\n";
myfile << "}"<< "\n";
myfile.close();
system("cl /EHsc myfile.cpp");
return 0;
}

ahmad_201494
پنج شنبه 30 بهمن 1393, 15:25 عصر
این فقط یک فایل به نام myfile.cpp کنار exe برنامه درست کرد.
منظورمم همون بود که exe اونو (همونایی که نوشتید)کنار exe برنامه درست کنه.

rahnema1
پنج شنبه 30 بهمن 1393, 15:30 عصر
قبل از return 0 این دستور را بذارید و ببینید چه پیغامی میده
system("pause");

ahmad_201494
پنج شنبه 30 بهمن 1393, 15:53 عصر
128639
بازم کنارش همون فایلو درست کرد.

rahnema1
پنج شنبه 30 بهمن 1393, 16:08 عصر
پیغام به این معنا هست که کامپایلر ویژوال استادیو در مسیر قرار نداره
در این دو لینک توضیح داده:
http://stackoverflow.com/questions/6476607/vc-cl-exe-dll-not-found
http://stackoverflow.com/questions/8800361/cl-is-not-recognized-as-an-internal-or-external-command

یا اینکه ابتدا از منوی استارت در قسمت ویژوال استادیو آیکون مربوط به اجرای ویژوال از طریق command prompt را پیدا و اجرا کنید و برنامه را از اون جا (محیط کنسول) اجرا کنید
یا مسیر فولدر ویژوال استادیو را به متغیر محیطی PATH ویندوز معرفی کنید ( در قسمت environment variables )
که در اون دو لینک توضیح داده

ahmad_201494
پنج شنبه 30 بهمن 1393, 16:31 عصر
اینم مربوط به زمانی هست که برنامه رو از داخل ویژوال استدیو اجرا میکنم.
128640

rahnema1
پنج شنبه 30 بهمن 1393, 16:40 عصر
در منوی استارت گزینه Visual Studio Command Prompt را پیدا و اجرا کنید از اونجا دنبال کنید
اگه نبود در فولدر ویژوال استادیو فایل vcvars32.bat را اجرا کنید
توضیح داده:
http://stackoverflow.com/questions/4505362/cl-exe-not-finding-any-standard-include-file

negative60
پنج شنبه 30 بهمن 1393, 17:12 عصر
يک راه ديگه اينه cygwin رو دانلود (http://www.claremontmckenna.edu/pages/faculty/alee/g++/full.exe) کنيد بعد نصب کنيد حالا به سادگی ميتونيد يک فايل cpp رو به وسيله کامپايلر ++G کامپايل کنيد
به اين صورت:
[مسير خروجی برنامه] o- [مسير فايل cpp] [مسير فايل ++g]

مثال:

D:\cygwin-b20\H-i586-cygwin32\bin\g++.exe "c:\test\main.cpp" -o "c:\test\myProg.exe"

نکته مهم اينه که فايل cygwin1.dll هم بايد کنار برنامه اصليت باشه هم کنار خروجی توليد شده