我需要使用gfortran在Windows上建立一個FORTRAN DLL,使得它可以通過C++和Visual Studio 2013年如何使用gfortran使用我的.dll構建.lib文件?
我有與MSYS2樣品DLL建築被調用,但我無法弄清楚如何獲取Visual Studio的LIB文件。
在線搜索主要產生了關於如何使用Visual Studio製作LIB文件以及如何僅通過DLL和頭文件創建LIB文件的結果。但我不想做後者中涉及的令人討厭的東西,我不認爲我需要,因爲我是構建DLL的人。我只是想構建DLL並獲取我的LIB文件。
有一個例外是this SO question,但答案並不明確。看起來他正在做類似於在DLL已經存在之後創建LIB文件的其他解決方案,但我無法相信這是最佳解決方案。
事實上,我不滿意創建它的部分原因是我想將其放入一個進程中,以便其他開發人員可以在我之後使用代碼 - 這不僅僅是一次性代碼,建立某種事情。我不想給他們一個複雜的指令列表。
你知道如何做到這一點,或者有什麼建議如何去做?
這是我寫得不好的示例Makefile。如果需要,我可以發佈其餘的代碼。
的Makefile:(我的編輯替換標籤用空格)
FC=gfortran -g
CC=g++ -g
DLL_SRC_DIR=.
BUILD_DIR=build
all:
$(FC) -c $(DLL_SRC_DIR)/fdll.f90 -o $(BUILD_DIR)/fdll.o
$(CC) -c -DBUILDING_C_DLL $(DLL_SRC_DIR)/cdll.cpp -o $(BUILD_DIR)/cdll.o
$(CC) -shared -o $(BUILD_DIR)/cdll.dll $(BUILD_DIR)/cdll.o $(BUILD_DIR)/fdll.o -Wl,--out-implib,$(BUILD_DIR)/libcdll.a -lgfortran
clean:
rm -f $(BUILD_DIR)/*
編輯:感謝IanH,這裏是我的新的Makefile!
FC=gfortran -g
CC=g++ -g
DLL_SRC_DIR=.
BUILD_DIR=build
all:
$(FC) -c $(DLL_SRC_DIR)/fdll.f90 -o $(BUILD_DIR)/fdll.o
$(CC) -c -DBUILDING_C_DLL $(DLL_SRC_DIR)/cdll.cpp -o $(BUILD_DIR)/cdll.o
$(CC) -shared -o $(BUILD_DIR)/libcdll.dll $(BUILD_DIR)/cdll.o $(BUILD_DIR)/fdll.o -Wl,--out-implib,$(BUILD_DIR)/libcdll.a,--output-def,$(BUILD_DIR)/libcdll.def -lgfortran
/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 12.0/VC/BIN/lib /MACHINE:x86 /DEF:$(BUILD_DIR)\\libcdll.def /OUT:$(BUILD_DIR)\\libcdll.lib
clean:
rm -f $(BUILD_DIR)/*
MAGNIFICENT!非常感謝你@伊恩!我將新的Makefile的副本添加到問題中。 –