2012-11-01 32 views
4

我使用在Windows 7上的MinGW如何使用g ++編譯和鏈接庫(SDL),以便擁有獨立程序?

簡單地說,我想創建一個Hello World程序SDL(啓動窗口或簡單的東西),並編譯它,這樣我有一個單獨的程序,我可以分發沒有,比方說,用戶不得不安裝任何額外的東西(比如將SDL.dll放在Windows文件夾中)。

  • 我已經下載了SDL開發庫,這是目前 坐在c:\SDL
  • 在我的項目文件夾中我有test.cppSDL.dll

我也不太清楚下一步該怎麼做;我首先想到的是我可以包含SDL,然後直接連接到命令行中的DLL,但是也許我需要先用我的程序編譯SDL開發庫?我唯一的目標是將我的SDL程序包裝在一個文件夾中,以便我可以將其分發到其他Windows平臺,而不需要額外安裝任何東西 - 或者他們肯定需要在Windows文件夾中安裝SDL.dll?

編輯:進一步澄清 - 有人可以描述我要採取的步驟嗎?我的意思是,開發人員想要分發他的應用程序會做什麼?當安裝這樣的應用程序時,大多數遊戲安裝者是否會將.dll文件放入Windows文件夾中?

源(TEST.CPP):

#include <SDL/SDL.h> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Hello World!"; 
    return 0; 
} 

文件夾:

test.cpp SDL.dll

命令行:

g++ test.cpp -lSDL

輸出:

test.cpp:2:17: fatal error: SDL.h: No such file or directory compilation terminated

+1

他們肯定會需要SDL.dll,但不一定要在Windows文件夾中。如果您願意,您可以從任何地方加載它。查找LoadLibrary Windows API。可能是做一些關於'DLL注入'的研究的想法,因爲目前這似乎是一個熱門的安全主題。 – john

+0

您的編譯器找不到頭文件SDL/SDL.h,您可能需要使用'g ++ -IC:/ SDL test.cpp -lSDL'或其他東西(抱歉,我不確定SDL安裝的外觀)。 – john

回答

2

include SDL and then just link to the DLL in the commandline and voila

是的,幾乎就是這樣。

but perhaps it would seem I need to compile the SDL development library with my program first?

什麼?除非您正在開發嵌入式系統,否則沒有單獨的「開發」庫。您鏈接的是與啓動程序時將加載的DLL完全相同的鏈接。

+0

你能詳細說明實際過程嗎?我只需要通過'g ++'編譯並在命令行選項中鏈接DLL文件? – njp

+0

@DesmondWolf是的,正好。請注意包含和庫路徑(您可能需要使用'-I'和'-L'手動指定它們)。 – 2012-11-01 07:31:56

+0

謝謝。在我的源代碼中,我有'#include '和'SDL.dll'與我的代碼位於同一個文件夾中。但我不確定用什麼命令行選項來編譯。如果我這樣做:'g ++ test.cpp -lSDL',它表示:'致命錯誤:SDL.h:沒有這樣的文件或目錄' – njp

相關問題