9 Stimmen

Statische Bibliothek erstellen und mit premake verlinken

Ich versuche gerade zu lernen, wie man premake 4 benutzt, um es auf die OpenGL sdk . Ich bin derzeit versuchen, eine Visual Studio 2010-Lösung zu machen, die 2 Projekte konstruiert, wobei eine eine statische Bibliothek, die andere enthält eine einzige Haupt-Quelldatei, mit der Hauptmethode.

Dieses Projekt ist sehr einfach und dient ausschließlich dem Zweck, premake zu erlernen. In dem statischen Bibliotheksprojekt mit dem Namen Test habe ich 2 Dateien, Test.h und Test.cpp. Test.h enthält den Prototyp für die Methode print(). print() gibt einfach eine Zeile auf der Konsole aus. Mit premake habe ich die statische Bibliothek mit dem Main-Projekt verknüpft, und in main.cpp habe ich die Datei Test.h eingebunden. Mein Problem ist folgendes: in VS2010 erhalte ich diese Fehlermeldung, wenn ich versuche, zu erstellen:

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

Hier ist mein Code in den 4 Dateien, die premake4.lua:

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:

#include <iostream>

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

Test.h:

void print();

Main.cpp:

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

Wenn Sie sich fragen, warum es dort ein getch() gibt, auf meinem Computer schließt sich die Konsole sofort, sobald sie den Rückgabewert 0 erreicht, also verwende ich getch(), um dieses Problem zu bekämpfen, was das Fenster zwingt, zu warten, bis der Benutzer eine andere Taste gedrückt hat. Jeder Rat zu diesem Problem wäre wunderbar, denn ich bin mir einfach nicht sicher, was das Problem ist. Wenn es etwas einfaches ist, bitte kastrieren Sie mich nicht, ich habe sehr wenig Erfahrung mit premake und statischen Bibliotheken, weshalb ich versuche, sie zu lernen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X