我目前正试图学习如何使用premake 4以将其应用于OpenGL sdk。我目前正在尝试制作一个Visual Studio 2010解决方案,该解决方案构建2个项目,一个是静态库,另一个包含一个主要源文件和主要方法。创建静态库并通过预制链接到它
这个项目非常简单,只是为了学习premake的目的。在名为Test的静态库项目中,我有2个文件,Test.h和Test.cpp。 Test.h包含print()方法的原型。 print()只是打印一行到控制台。使用premake,我将静态库链接到Main项目,并在main.cpp中包含了Test.h文件。我的问题是这样的:
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:
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的:在VS2010当我尝试建立我得到这个错误
#include <iostream>
void print(){
std::cout << "HELLO" << std::endl;
}
Test.h:
void print();
MAIN.C PP:
#include <conio.h>
#include "test.h"
int main(){
print();
getch();
return 0;
}
如果你想知道为什么有一个残培()那里,在我的电脑上的控制台立即关闭,一旦它到达返回0,所以我使用的getch(),以应对这一问题,这迫使窗口等待用户按下另一个键。任何关于这个问题的建议都会很棒,因为我不确定问题是什么。如果它是简单的东西,请不要阉割我,我对premake和静态库很少有经验,这就是为什么我试图学习它们。
这就是问题所在,但是现在我遇到了一个问题,当我尝试运行构建时,弹出窗口中显示:无法启动程序:'file_location \。\ Test.lib'指定的文件处于无法识别或不受支持的状态二进制格式。任何帮助? PS。我更改的是将Links {“Test”}移至语言正下方。 – user1032369
@ user1032369:这是因为您正在尝试运行*库*,而不是可执行文件。更改当前的“启动项目”。 –
所以我只能通过点击可执行文件来运行预制程序,我不能直接从VS运行它。 – user1032369