2011-11-25 9 views
5

私は現在、プレキャスト4をOpenGL sdkに適用する方法を学びたいと考えています。私は現在、2つのプロジェクトを構築するVisual Studio 2010ソリューションを作成しようとしています.1つは静的ライブラリであり、もう1つはmainメソッドを含む単一のメインソースファイルです。スタジオライブラリーを作成してpremakeでリンクする

このプロジェクトはとてもシンプルなもので、あくまで事前学習を目的としています。 Testという静的ライブラリプロジェクトでは、Test.hとTest.cppという2つのファイルがあります。 Test.hには、print()メソッドのプロトタイプが含まれています。 print()は単にコンソールに行を出力します。 premakeを使って、静的ライブラリをMainプロジェクトにリンクし、main.cppにTest.hファイルを含めました。私が構築しようとするとVS2010で、私はこのエラーを取得:

solution "HelloWorld" 
    configurations {"Debug", "Release"} 
project "Main" 
    kind "ConsoleApp" 
    language "C++" 
    files{ 
     "main.cpp" 

    } 
    configuration "Debug" 
     defines { "DEBUG" } 
     flags { "Symbols" } 

    configuration "Release" 
     defines { "NDEBUG" } 
     flags { "Optimize" } 
    links {"Test"} 
project "Test" 
    kind "StaticLib" 
    language "C++" 
    files{ 
     "test.h", 
     "test.cpp" 

    } 

Test.cppの:

ここ

 
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl print(void)" (? [email protected]@YAXXZ) referenced in function _main 
1>.\Main.exe : fatal error LNK1120: 1 unresolved externals 

は4つのファイル、premake4.luaで私のコードで私の問題はこれです

#include <iostream> 

void print(){ 
    std::cout << "HELLO" << std::endl; 
} 

TEST.H:

void print(); 

のmain.c PPは:それは0を返す達するとそこgetchは()がありますなぜあなたは

#include <conio.h> 
#include "test.h" 
int main(){ 
    print(); 
    getch(); 
    return 0; 
} 

を不思議に思っている場合は、自分のコンピュータ上でコンソールがすぐに閉じて、私は、ウィンドウを強制的にその問題を、戦うためにgetchは()を使用しますユーザが別のキーを押すまで待つ。問題の内容がわからないので、この問題に関するアドバイスは素晴らしいと思います。何か簡単なことであれば私にそれを嫌うのではなく、プレマイクとスタティックライブラリの経験がほとんどないので、私はそれらを勉強しようとしています。

答えて

9
links {"Test"} 

ルアはPythonではありません。空白はLuaとは無関係です。空白はC++とは関係ありません。したがって、links文は"Release"設定にのみ適用されます。プロジェクト全体に適用したい場合は、kindfiles、および他のコマンドのように、configurationステートメントの前に移動する必要があります。

Premake4はこのように動作し、"Release"ビルド(またはDebugなど)でのみ使用される特定のライブラリを持つことができます。実際には、のいずれかをprojectのコマンドをconfigurationの下に置くことができます。したがって、デバッグビルドなどでのみ使用される特定のファイルを持つことができます。

+0

これは問題ですが、ビルドを実行しようとすると問題が発生します:プログラムを起動できません: 'file_location \。\ Test.lib'指定されたファイルが認識できないかサポートされていませんバイナリ形式。これに関する助け? PS。私が変更したのは、リンク{"テスト"}を言語のすぐ下に移動することでした。 – user1032369

+0

@ user1032369:実行可能ファイルではなく*ライブラリ*を実行しようとしているからです。現在の「スタートアッププロジェクト」を変更します。 –

+0

私は実行可能ファイルをクリックするだけでpremakeプログラムを実行できます。私はVSから実行することはできません。 – user1032369

関連する問題