Makeは、すべての人にとって何の関係もないと言っています。私はインターネットを検索しましたが、このことを言う状況は何十もあります。しかし、解決策はどれも役に立ちませんでした...
私は MinGW を使用しています。私のディレクトリにはRes.def
、Res.h
、Res.cpp
およびRes.o
を実行した後に取得したものがありますg++ -c Res.cpp
。
メイクファイルは次のとおりです。
CFLAGS = -c -G3 -GX -Od -W3 -Zi -D_X86_=1 -DWIN32 -D_WIN32 -nologo -DSTRICT
LFLAGS = -debug:mapped,full -debugtype:cv -nologo
LIBS = libc.lib kernel32.lib user32.lib
SRCS = Res.def Res.cpp Res.h
OBJS = Res.o
all: Res.dll
Res.dll: $(SRCS) $(OBJS)
$(SRCS):
co $(SRCS)
.cpp.obj:
cl $(CFLAGS) $*.cpp
.rc.rbj:
rc $*.rc
cvtres -i386 $*.res -o $*.rbj
.obj.dll:
link $(LFLAGS) -DLL -subsystem:windows -out:$*.dll \
-def:$*.def $(OBJS) $(LIBS)
.obj.exe:
link $(LFLAGS) -subsystem:console -out:$*.exe \
$*.obj $(EXELIBS)
dll を作成するにはどうすればよいですか?
アップデート:
私は Java 出身で、C や C++ を理解できるようになったら、make ファイルの完全な初心者であり、コードにいくつかの変更を加えた後、オープンソースの dll を再アセンブルしようとしています。C アプリケーションのビルドについて読んだことがありますが、あまり役に立ちません。元のメイクファイルのOBJS
行は異なっていました。
OBJS = Res.obj
OBJS = Res.o
どうにかしてdllをビルドしようとしたときに変更しました。元のファイルは次のようになります。
CFLAGS = -c -G3 -GX -Od -W3 -Zi -D_X86_=1 -DWIN32 -D_WIN32 -nologo -DSTRICT
LFLAGS = -debug:mapped,full -debugtype:cv -nologo
LIBS = libc.lib kernel32.lib user32.lib
SRCS = Res.def Res.cpp Res.h
OBJS = Res.obj
all: Res.dll
Res.dll: $(SRCS) $(OBJS)
$(SRCS):
co $(SRCS)
.cpp.obj:
cl $(CFLAGS) $*.cpp
.rc.rbj:
rc $*.rc
cvtres -i386 $*.res -o $*.rbj
.obj.dll:
link $(LFLAGS) -DLL -subsystem:windows -out:$*.dll \
-def:$*.def $(OBJS) $(LIBS)
.obj.exe:
link $(LFLAGS) -subsystem:console -out:$*.exe \
$*.obj $(EXELIBS)
そのデフォルト行では、別のことを言っていました:
*** No rule to make target `Res.obj`, needed by `Res.dll`. Stop.
この単純な dll をアセンブルする方法を教えてください。私は完全に迷っています。これらの複雑さは、単一のソースファイルからライブラリを構築するという単純なタスクにとってはやり過ぎのように思えます....?