none
Visual Studio 2012試用版でWindows 8用 WDKのリンクエラー RRS feed

  • 質問

  • はじめまして。

    新しく購入したWindows 8のPCにVisual Studio 2012の試用版とWDK 8.0をインストールし、従来製品のソースを使ってWDK 8.0でビルドすると、次のエラーがでました。なお、ソースは従来タイプのWDKでは正常にコンパイルできているので、基本的なプログラミングミスはないはずです。

    LINK error LNK2001 外部シンボル”_WinMainCRTStartup” は未解決です。

    Visual Studio 2012のリンクエントリーポイントに _WinMainCRTStartupなどを書き込んでみたりしましたが、メッセージは代わっても同じエラーが出ます。このソフトの特徴は、(1)ユニコードでFEPタイプのソフトなので、Win32アプリケーションではあるが、WinMainがない。(2)C++ではなく、C言語を多用しており、かつCRT(C Runtime Library)関数も多く使っている。

    CRT関数をWin32関数に置き換える必要がある場合は、大変な作業になるので、しばらく様子をみることにします。

    現状のままで、WDK 8.0でビルドできる方法があれば教えてください。

    2012年11月26日 6:56

回答

  • 従来のWDKでビルドできているソースは、

    Visual Studio 2012を起動して、 ファイル - 開く - Convert Sorces/Dir.. で変換できることがわかりました。

    お騒がせしました。

    • 回答としてマーク 佐伯玲 2012年11月30日 4:12
    2012年11月28日 4:41

すべての返信

  • FEPタイプとは何でしょうか? 広く一般に知られている表現ではないように思いますが。
    2012年11月26日 11:46
  • 正確な使い方ではないかもしれませんが、FEPは(Front-End Processor)で、ソフトは具体的には、日本語入力システムです。

    2012年11月26日 14:24
  • FEPをFront End Processorの意味で用いられたのですね。WindowsではIME; Input Method Editorと呼びます。

    で質問には答えて頂けていないように思います。「FEPタイプ」とは何でしょうか? FEPを実現するアプリケーションという意味でしたらIMEという呼び名を知っていて当然ですし、IME自身なのですから「タイプ」などという表現にはならないと思います。であれば、「FEPタイプ」が何を指しているのか謎です。

    質問者さんはFEP作者さんなのですか? というのも、FEP and/or IMEを作るほどの人がこのような質問をされるとは思えないので。

    2012年11月26日 14:36
  • 何か疑っておられるようですが、私はこのソフトの作者にまちがいはありません。

    SDKでもWDK(DDK)でも、マイクロソフト社からサンプルが提供されますね。初心者は最初から全部作るわけではありません。ただしサンプルは基本部分のみ提供されますので、そのまま改良しても製品化することはできません。別のサンプルも上乗せしながら何年もかけてようやくできあがります。私は、このソフトの中身および関連する狭い範囲の知識についてはずいぶん詳しくなりましたが、ソフト設計技術そのものは初級のプログラマー以下です。

    結局、この問題は、簡単にできるということでしょうか?素人だと思ってヒントだけでもください。

    2012年11月27日 2:15
  • では改めて。

    作成時にできあがる実行ファイルの拡張子は何を想定していますか? .EXEですか? .DLLですか? 後者であれば「FEPタイプ」ではなく「DLLタイプ」と表現してください。用語が正しく使われないと他者と意思疎通できません。
    WinMain()はないとのことですが、代わりとなるものは何がありますか?main()もしくはDllMain()があるかと思います。もしくは wWinMain()とか_tWinMain()とかwmain()とか_tmain()とか。それぞれに合わせたコンパイルオプションを選択する必要があります。

    ちなみに自分自身の作成しているプログラムについて無知なのは、実際に無知なだけよりも、他人のプログラムをコンパイルしようとしているだけの方だったりすることが多々あります。ですので疑いました。
    また、製品化という言葉が出てきてぎょっとしました。(IMEではなく)FEPなどという表現をされていては製品利用者に通じませんよ? 利用者が購入しようとするのはIMEでありFEPではないわけですから。

    2012年11月27日 2:33
  • ありがとうございました。これ以上質問できません。終わりにします。

    私はソフトの専門家ではないので、おしゃられていることは、半分くらいしか理解できません。後は、実際にやってみて考えます。


    • 編集済み 星 睦美 2012年11月28日 1:31 スレッドの一部分を削除しました。
    2012年11月27日 5:01
  • (すでに解決済みでしたら、この返信は無視してください。)

    > なお、ソースは従来タイプのWDKでは正常にコンパイルできているので、基本的なプログラミングミスはないはずです。

    上記一文から推測するに。。。
    もしかして、"Windows 2003 SP1 DDK" まで提供されていた fakeime サンプルをベースに IME を開発されて、そのビルド環境を VS2012 に移行しようとしているのでしょうか?

    2012年11月27日 6:10
  • お馬鹿さま

    その通りです。ただし、当然ながら元の部分は全体の一部でしかありません。

    しかし、基本的な流れは同じと思いますので、移行するよい方法があれば教えてください。

    2012年11月27日 7:43
  • > その通りです。ただし、当然ながら元の部分は全体の一部でしかありません。

    そのような大事な情報をしっかりと記載しないから、他の方から指摘されてしまうんだと思います。

    > しかし、基本的な流れは同じと思いますので、移行するよい方法があれば教えてください。

    FakeIME は DDK が WDK に名称変更されてから除外されたので、あえて WDK8 を使う必要はないと思いますが。。。
    とりあえず、私の VS2012 環境で FakeIME 用のプロジェクトを作成して試したところ、とりあえずビルドできました。
    ただし、フォルダ構成やヘッダー ファイルのパス、リンクするライブライ ファイル等を一部手動で変更しました。
    また、ビルド時にいくつかのワーニングも出ましたが、面倒なので詳細は確認していません。

    リバーフィールドさんが直面している現象の一番の問題は、プロジェクトを作成する時のプロジェクト タイプを間違えているからだと思います。
    どのように間違えているのかは、すでに佐祐理さんが指摘されている通りです。
    せっかく佐祐理さんが指摘してくださったのだから、それをちゃんと理解されれば、ビルドできるようになると思います。

    • 編集済み お馬鹿 2012年11月28日 1:44 一部内容の削除
    2012年11月27日 11:09
  • お馬鹿さん

    FakeIMEに対する回答ありがとうございます。

    削除の件は、管理人さんにおまかせします。これはあくまで私の個人的な意見です。気に障ったことお詫びします。

    2012年11月27日 12:19
  • リバーフィールド さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    質問と回答のスレッドのつながりが分かりにくくなりますので
    今回は私のほうで質問と関連が薄い部分を削除させていただきました。

    MSDN フォーラムはマイクロソフトのプラットフォームを使用したアプリケーション開発に関する話題を扱う、ユーザーのコミュニティです。マイクロソフトへのご意見やお問い合わせがありましたら、サポートのページからお選びいただいてお寄せいただければ幸いです。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美


    • 編集済み 星 睦美 2012年11月28日 2:06 修正
    2012年11月28日 2:04
  • 従来のWDKでビルドできているソースは、

    Visual Studio 2012を起動して、 ファイル - 開く - Convert Sorces/Dir.. で変換できることがわかりました。

    お騒がせしました。

    • 回答としてマーク 佐伯玲 2012年11月30日 4:12
    2012年11月28日 4:41