同じような質問がでていましたら、すみません。

いままでWS(unix)で作っていたC言語のプログラムをWindowsで実行しようと
しています。
Microsoft Visual C++ 6.0 Proを購入し、
新規でプロジェクトを作成するところで止まってしまいました。

「プログラムをコンパイルして、あるバイナリファイルを読み込み、
指定したファイルへ結果を書き込む」
という操作がしたいのですが、プロジェクトの種類はどれにすればいいのでしょうか?

また、ファイルを読み込む際、メインと関数は別のファイルになっているの
ですが、コンパイルはどのように指定すればいいのでしょうか?

もうひとつ、今までargv[]で入出力ファイルを指定していました。
# (メイン)(入力ファイル) (出力ファイル)のように
この処理はVC++でできるのでしょうか?

VC++の入門の本を購入したのですが、Cのプログラムについては
なかなか載っていないので困っています。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

> プロジェクトは出来たのですが、***.cppと、StdAfx.hというファイルが


> 出来ました。

VC6.0 は良く憶えてないのですが、プロジェクトを新規作成する過程で、MFC を
使う/使わないの選択がありましたか?

もしあれば、「使わない」としてください。
    • good
    • 0
この回答へのお礼

a-kumaさん、アドバイスありがとうございました。
「MFCを使用するプロジェクト」という選択肢があって、
なぜかそれを選んでいました。
プロジェクトを作成し直して、「空のプロジェクト」を選択したら、
前に書いたファイルは出来ていませんでした。

本当に助かりました。ありがとうございました。

お礼日時:2002/04/03 09:10

ファイルが複数あるなら、最初からプロジェクトがあったほうがいいです。


a-kumaさんの言うとおり、新規作成でWin32コンソールアプリケーションのプロジェクトを作ります。
ウィザードでは何も作らないように選択すると、ぷリコンパイル済みヘッダーがどうのこうののエラーはなくなります。
そのあと、ファイルの追加で必要なファイルを全部ぶっこんでからビルドすると、わずらわしいリンクとかも全部やってくれます。
    • good
    • 0
この回答へのお礼

haporunさん、アドバイスありがとうございました。
そうなんです、ファイルが複数あるのです。
プロジェクトを作成して、「空のプロジェクト」を選択したら、
前に書いたファイルは出来ていませんでした。
これでビルドできそうです。
本当に助かりました。ありがとうございました。

お礼日時:2002/04/03 09:08

UNIX屋さんならば、コマンドラインのユーティリティを使った方が分かりやすいかもしれませんよ。



インストール先のbinディレクトリにVCVARS32.BATというバッチファイルがあります。

DOS窓を開いて、このファイルを実行すると必要な環境偏すが設定されますので、nmakeやcl(コンパイラ本体)、link等の開発に必要なユーティリティが使用できるようになります。
    • good
    • 0
この回答へのお礼

you-mさん、早速の回答ありがとうございました。

ヘルプでVCVARS32.BATの実行方法を見てみました。
割と簡単にできそうですね。

とりあえず、VC++上でやってみて、イザというときに使わせていただきます。
ありがとうございました。

お礼日時:2002/04/01 14:05

プロジェクトを作らずに、そのファイルを読み込んで、ビルドしようとしたら、かってに適切なプロジェクトを作ってくれますよ。

    • good
    • 0
この回答へのお礼

haporunさん、早速の回答ありがとうございました。
これは、すべてのファイルを開いてからビルドを実行すればいいのでしょうか?
それともメイン関数だけ開けばいいのでしょうか?
あと、実行するときに、入出力ファイルを設定するにはどうすればいいのでしょうか?

お礼になってなくてすみませんが、よろしかったら教えてください。

お礼日時:2002/04/01 13:59

> プロジェクトの種類はどれにすればいいのでしょうか?



コンソールアプリケーションを選択します。

> また、ファイルを読み込む際、メインと関数は別のファイルになっているの
> ですが、コンパイルはどのように指定すればいいのでしょうか?

プロジェクトにソースを追加します。

> もうひとつ、今までargv[]で入出力ファイルを指定していました。
> # (メイン)(入力ファイル) (出力ファイル)のように
> この処理はVC++でできるのでしょうか?

できますよ。

この回答への補足

プロジェクトは出来たのですが、***.cppと、StdAfx.hというファイルが
出来ました。
Cプログラムのファイルを追加したのですが、
「fatal error C1010: プリコンパイル済みヘッダーの
検索中に予期しない EOF を検出しました。」
というエラーが出ています。
新しく出来たファイルになにか書き込みをしなければいけないのでしょうか?
あと、
> もうひとつ、今までargv[]で入出力ファイルを指定していました。
> # (メイン)(入力ファイル) (出力ファイル)のように
> この処理はVC++でできるのでしょうか?
よろしければこの処理の詳しい方法を教えてください。
いろいろお願いしてすみません。

補足日時:2002/04/01 13:50
    • good
    • 0
この回答へのお礼

a-kumaさん、早速の回答ありがとうございました。
コンソールアプリケーションでプロジェクトが作れました。

お礼日時:2002/04/01 13:46

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVC++2008で、新規フォームアプリのメインプロジェクトの内容について

aという名前を付けて作ったら、a.ccpの内容は以下のようになっていました。
---------

// a.cpp : メイン プロジェクト ファイルです。

#include "stdafx.h"
#include "Form1.h"

using namespace a;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// メイン ウィンドウを作成して、実行します
Application::Run(gcnew Form1());
return 0;
}


---------

この、
using namespace a;
の行までと//つきのコメントの行は意味は分かるのですが、
それ以外の細かい意味がよく分かりません。


・main関数の()内にマネージ配列がこのように入っていると、結果的にどういう動作になるのでしょうか?また、return 0でどうなりますか?


・Application::EnableVisualStyles();
は、「visual スタイル」を有効にするための表記だと聞きましたが、その「visual スタイル」というのはなんなのでしょうか?



・Application::SetCompatibleTextRenderingDefault(false);
というのは、スタンドアロンの Windows フォーム アプリケーション用の表記なのですよね?テキスト描画方法?に関係してる、みたいなことを見た気がしますが、具体的にはtrueにするとどうなって、falseにするとどうなるのでしょうか?


・Application::Run(gcnew Form1());
の()内は、Form1.hで実装済みのFormクラスを継承して作られていたrefクラス「Form1」のインスタンスを『無名』で作り、それに対してApplication::Runメソッドを実行する、という意味なのでしょうか?

aという名前を付けて作ったら、a.ccpの内容は以下のようになっていました。
---------

// a.cpp : メイン プロジェクト ファイルです。

#include "stdafx.h"
#include "Form1.h"

using namespace a;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// メイン ウィンドウを作成して、実行します
...続きを読む

Aベストアンサー

> Application::EnableVisualStyles();
は WinXPやVistaの表示スタイルと Win2000以前の表示スタイルの切り替えです
Win2000以前のクラシックスタイルにしたければコメントアウトします

> Application::SetCompatibleTextRenderingDefault(false);
VS2002/2003形式の表示方法に変更するかどうかのようです
trueで2002/2003形式 falseで2005形式

たとえば ボタンのTextプロパティが Button 1とした場合に
ボタンが『Button 1』すべてを1行で表示しきれない大きさの場合
2005形式では改行されませんが 2002/2003形式の場合は改行して表示されます

QVC++6.0のプロジェクトをVC++2005Expressで動かしたいがエラーが出まくってしまいます。

VC++6.0のプロジェクトをVC++2005Expressで動かしたいのですが
エラーが出まくってしまいます。
VC++6.0では正常にコンパイル終了するものがexpressだと、

・・・string.h(135) : warning C4003: マクロ '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX' に指定された実引数の数が少なすぎます。

とか、

・・・string.h(135) : error C2065: '_string' : 定義されていない識別子です。

とか、

・・・string.h(135) : error C2275: '_locale_t' : この型は演算子として使用できません

とかです。string.hなど、触ったこともないのですが、
express用に編集が必要なのでしょうか?

ちなみに PlatformSDK などはインストールして、include,exectable,library ディレクトリなどのパスも通しています。

何か良い方法を教えてください。お願いします。

VC++6.0のプロジェクトをVC++2005Expressで動かしたいのですが
エラーが出まくってしまいます。
VC++6.0では正常にコンパイル終了するものがexpressだと、

・・・string.h(135) : warning C4003: マクロ '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX' に指定された実引数の数が少なすぎます。

とか、

・・・string.h(135) : error C2065: '_string' : 定義されていない識別子です。

とか、

・・・string.h(135) : error C2275: '_locale_t' : この型は演算子として使用できません

とかです。...続きを読む

Aベストアンサー

私も同様でした。
次のように対処しました。
1.警告気にしないことにする。(警告数は966件)
2.エラーは修正する。
3.ヘッダーファイルがないと言われたときは
  ***.h  を  ***  に変える

 エラー修正は
ネームスペースが原因のものがほそんどでしたので
ofstream ofs を使っていた場合は
その前に
using namespace std;
を書き加える。

設定で

プロジェクト
プロパティー
文字セット

のところは、

マルチバイト文字セットを使用する

にしています。

 以上、エラーは無視します!!

QVC++のプロジェクト指定

VC++でほぼ始めて”EXE”を開発するのですが、[新規作成]でどのプロジェクトを指定すればいいかわかりません。
つまり、「MFC AppWizard(exe)」と「Win32Application」と「Win32ConsoleApplication」の使い分けがわかりません。
ちなみに、現在、あるAPからCALLされるEXEを作ろうとしています。
このEXEの機能は、レジストリからある情報を読み込み、その内容をINIファイルに出力し、読み込んだレジストリ情報で指定されているEXEにパラメータとしてこのINIファイルを設定し、実行させるものです。
宜しくお願いします。

Aベストアンサー

MFC AppWizard:
MFC(Microsoft Foundation Class)ライブラリを利用したWindowsアプリケーションを作成する

Win32Application:
Win32SDKを利用するWindowsアプリケーションを作成する

Win32 Console Application:
DOSエミュレート環境で動作するコンソールアプリケーションを作成する

どのプロジェクトを選んでもお望みの機能を実現するアプリケーションは作成可能です。
しかし、実用的な選択としてはWin32ApplicationかMFCApplWizardでしょう。

MFCはWin32APIのラッパークラスやウィンドウ制御ライブラリなどが含まれます。
C++で作るならMFCがよい選択かもしれません。

Cで作るなら素直にSDKで作った方が楽なのでWin32Applicationで作ることになるでしょう。
C++でWin32Applicationを作ることも可能ですが、C++ならMFCを利用した方が楽です。

アプリケーションとしてではなく、ActiveXとして実現することも出来ます。
この場合はATL COM AppWizardで作成します。
(C++になります)

MFC AppWizard:
MFC(Microsoft Foundation Class)ライブラリを利用したWindowsアプリケーションを作成する

Win32Application:
Win32SDKを利用するWindowsアプリケーションを作成する

Win32 Console Application:
DOSエミュレート環境で動作するコンソールアプリケーションを作成する

どのプロジェクトを選んでもお望みの機能を実現するアプリケーションは作成可能です。
しかし、実用的な選択としてはWin32ApplicationかMFCApplWizardでしょう。

MFCはWin32APIのラッパークラスやウィンドウ制御ラ...続きを読む

QCとC++のファイルがあるプロジェクト

超初心者です(><)

ルネサスの統合環境HEW3を使っています。
自分で書いたプログラムはC++、統合環境で用意されているプログラムはCです。
「mainプログラム(C++)」+「統合環境で用意されているプログラム(C)」のプロジェクトは問題なくビルドできるのですが、
「mainプログラム(C++)」+「C++プログラム」+「統合環境で用意されているプログラム(C)」のプロジェクトはビルドできなくて困ってます。

「C++プログラム」+「統合環境で用意されているプログラム(C)」のリンクができなくて怒られてると思うのですが、どの辺に見当をつけて調べればいいのかすらわかりません(><)

エラーメッセージは、
Phase OptLinker starting
L2310 (E) Undefined external symbol "init_datasheet()" referenced in "C:\Hew3\MMT56_3\MMT56_3\Debug_SH-2_E10A-USB_SYSTEM\MMT56_3.obj"
Optimizing Linkage Editor Abort
Phase OptLinker finished

この、"init_datasheet()" という自作の関数を「C++プログラム」に書き、「mainプログラム(C++)」と「統合環境で用意されているプログラム(C)」内で使おうとしています。


今後のためにも、対処法をご教授くださいm(__)m
「プログラムを全てCで書けば?」とか「C++で書く必要あるの?」とかあしらわないで下さいね(^^;;

超初心者です(><)

ルネサスの統合環境HEW3を使っています。
自分で書いたプログラムはC++、統合環境で用意されているプログラムはCです。
「mainプログラム(C++)」+「統合環境で用意されているプログラム(C)」のプロジェクトは問題なくビルドできるのですが、
「mainプログラム(C++)」+「C++プログラム」+「統合環境で用意されているプログラム(C)」のプロジェクトはビルドできなくて困ってます。

「C++プログラム」+「統合環境で用意されているプログラム(C)」のリンクができなくて怒られてると思う...続きを読む

Aベストアンサー

関数のプロトタイプに extern "C" がついていますか?

QCのDLLをVC++でコンパイルしたいのですが、エラーになってしまいます。

c言語の初心者なのですが、質問させて下さい。

javaからCのDLLを呼び出したく、
(下記のソースを書いたのですが、VC++でコンパイルすると
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/HelloWorld.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と出てしまいます。
過去ログ等を見て、作成しているプロジェクトが悪いのかなと思い、
MFC appWizark(dll)
win32 Application
win32 Console Application
win32 Dynamic-Link Library
等を作ってみてコンパイルしてみたのですが、駄目でした。

ちなみにDOSプロンプトで
cl -IC:\j2sdk1.4.2_10\include\win32 -LD HelloWorl d.c -o HelloWorld.dll

と実行するときちんとコンパイルできて、正常に実行も出来ました。
VC++でどうやればコンパイルできるのでしょうか?


#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_printMessage
(JNIEnv *env, jobject me)
{
printf("Helo World!!!\n");
return;
}

c言語の初心者なのですが、質問させて下さい。

javaからCのDLLを呼び出したく、
(下記のソースを書いたのですが、VC++でコンパイルすると
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/HelloWorld.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と出てしまいます。
過去ログ等を見て、作成しているプロジェクトが悪いのかなと思い、
MFC appWizark(dll)
win32 Application
win32 Console Application
win32 Dynamic-Link Library
等を作ってみてコ...続きを読む

Aベストアンサー

プロジェクト作成時に
win32 Dynamic-Link Library
を使えば良いと思います。以下のサイトが参考になります。

http://www1.u-netsurf.ne.jp/~ysk-net/JSpe/Java/jni-.net2003.html

参考URL:http://www1.u-netsurf.ne.jp/~ysk-net/JSpe/Java/jni-.net2003.html


人気Q&Aランキング

おすすめ情報