ページ 11

winAPIが動かない

Posted: 2013年2月16日(土) 12:00
by missingno

コード:

#include <windows.h>

int WINAPI WinMain(
    HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
    return 0;
}
directxを始めようと思って上記の基本的なプログラムを実行しようとしたら
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル __imp__InterlockedExchange@8 が関数 ___tmainCRTStartup で参照されました。
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル __imp__Sleep@4 が関数 ___tmainCRTStartup で参照されました。
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル __imp__InterlockedCompareExchange@12 が関数 ___tmainCRTStartup で参照されました。
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル __imp__GetStartupInfoA@4 が関数 ___tmainCRTStartup で参照されました。
1>MSVCRTD.lib(unhandld.obj) : error LNK2019: 未解決の外部シンボル __imp__SetUnhandledExceptionFilter@4 が関数 ___CxxSetUnhandledExceptionFilter で参照されました。
のようなエラーが大量に出ます。プログラム初心者なのでどうすればいいか分かりません。どうかご教授ください。

Re: winAPIが動かない

Posted: 2013年2月16日(土) 13:15
by softya(ソフト屋)
何らかの環境に設定ミス・環境の破損が考えられます。
VIsualC++やWindowsSDKやDirectXSDKのインストールのバージョンや手順などを説明して頂けますか。
あと参考にしたサイトや書籍名を教えて下さい。

Re: winAPIが動かない

Posted: 2013年2月16日(土) 17:55
by missingno
環境:Microsoft VisualC++ 2008, MicrosoftSDK ver6.1, Microsoft DirectXSDK(June 2010)

VisualC++のインストールは
http://dixq.net/vcpp.html  を参考にして行いました。

ほかの環境は
http://wisdom.sakura.ne.jp/system/winap ... index.html
http://www.wgag.net/winapi/index.html
などを参考にしているうちにIncludeファイルが足りないことに気付いたので自力で検索してインストールしました。
またMicrosoftSDKもDirectXSDKもLibファイルとIncludeファイルのみ参照するようにしています。

Re: winAPIが動かない

Posted: 2013年2月16日(土) 18:02
by softya(ソフト屋)
WindowsSDK6.1ですか? それは古い気が。せめて7.1に。
ややこしくなるので、ココは保留します。

>などを参考にしているうちにIncludeファイルが足りないことに気付いたので自力で検索してインストールしました。

これがまずかった気が。
無理やり混ぜるとうまく動かなくなりますよ。

>またMicrosoftSDKもDirectXSDKもLibファイルとIncludeファイルのみ参照するようにしています。

ココらへんの設定もマズイかもしれません。

【追記】
ここの手順の 3 コンパイラーにSDKを認識させる設定(2008以前) だけ行なって下さい。
「VisualC++とDirectX SDKの設定 最新情報」
http://www.northbrain.org/book/DirectXSDK.html

余分な設定やファイルは消して元に戻しましょう。

Re: winAPIが動かない

Posted: 2013年2月16日(土) 18:44
by ISLe
DirectX SDK (June 2010)ってスタートメニューにVisual C++の設定をしてくれる項目がありませんでしたっけ。
2010以降はプロパティシートを使うようになったので、2008までしか対応しませんが。

2008ならWindows SDKを追加インストールする必要もないのでは。
Windows SDKのCRTバージョン違いによる問題とかはないですかね。

Re: winAPIが動かない

Posted: 2013年2月16日(土) 22:18
by missingno
>2008ならWindows SDKを追加インストールする必要もないのでは。
Visual C++ 2008のSDKフォルダはなぜか空で再インストールも失敗しました。

>ここの手順の 3 コンパイラーにSDKを認識させる設定(2008以前) だけ行なって下さい。
>「VisualC++とDirectX SDKの設定 最新情報」
確認しましたが、その通りに行っています。

>余分な設定やファイルは消して元に戻しましょう。
消していったらどうやら必要な設定を消してしまったらしく
1>プロジェクト : error PRJ0003 : 'link.exe' の起動中にエラーが発生しました。
というエラーが新しく発生しました。
おそらく実行可能ファイルディレクトリの設定を誤って削除したのが原因ですが、復旧方法が分かりません。
もともとの設定を教えていただければありがたいです。

Re: winAPIが動かない

Posted: 2013年2月16日(土) 22:23
by softya(ソフト屋)
Visual C++ 2008をアンインストールして再インストールした方が早そうです。

Re: winAPIが動かない

Posted: 2013年2月17日(日) 00:43
by missingno
一度アンインストールしてインストールし直してもだめでした。
もしかしたらやり方が悪かったのでしょうか?

Re: winAPIが動かない

Posted: 2013年2月17日(日) 00:52
by h2so5
最終手段ですがOSごと再インストールする手もあります。

Re: winAPIが動かない

Posted: 2013年2月17日(日) 00:57
by softya(ソフト屋)
こちらの設定も相当ぐちゃぐちゃなので、そのまま教えるわけにも行きません。
そちらの現状の状態を全部書きだしてみてください。 ※ 変えた関係の所だけ。

Re: winAPIが動かない

Posted: 2013年2月17日(日) 01:32
by missingno
>そちらの現状の状態を全部書きだしてみてください。 ※ 変えた関係の所だけ。
実行可能ファイル,インクルードファイル,ライブラリファイルの”$(なんたら~)”の部分を全削除しただけです。
また、追加した分については、前に書いた通りです。

Re: winAPIが動かない

Posted: 2013年2月17日(日) 02:29
by ISLe
missingno さんが書きました:>2008ならWindows SDKを追加インストールする必要もないのでは。
Visual C++ 2008のSDKフォルダはなぜか空で再インストールも失敗しました。
Windows SDKを追加インストールしないとwindows.hを使えなかったのでしょうか。
Visual C++ 2008のSDKフォルダとはどこのことでしょうか。
C:\Program Files\Microsoft Visual Studio 9.0\SDKのことなら空なのが正常ですが。

missingno さんが書きました:もともとの設定を教えていただければありがたいです。
方法 : 設定をリセットするは役に立ちませんかね。

Re: winAPIが動かない

Posted: 2013年2月17日(日) 10:51
by missingno
>方法 : 設定をリセットするは役に立ちませんかね。
これを試したところうまくいきました。
ありがとうございます。長い間ご迷惑をおかけして申し訳ありませんでした。

しかしDirectXが難しいと聞いていましたがこんなところで出鼻をくじかれるとは・・・

Re: winAPIが動かない

Posted: 2013年2月17日(日) 10:54
by softya(ソフト屋)
missingno さんが書きました:>方法 : 設定をリセットするは役に立ちませんかね。
これを試したところうまくいきました。
ありがとうございます。長い間ご迷惑をおかけして申し訳ありませんでした。

しかしDirectXが難しいと聞いていましたがこんなところで出鼻をくじかれるとは・・・
DirectXのバージョンごとの違いやら、DirectX9の環境の移り変わりとかも結構ややこしい事になっていますので落とし穴にハマると思います。
まだ、これから色々とあると思いますよ。