私はプログラミングのこの巨大な世界で初心者です。私はC言語でいくつかのコードを与えられていますが、&がmakefileを使ってリンクされています。 VS2005のnmakeを使ってコードをコンパイルできます。今私はC + +のVS2005のIDEでプログラムを構築したい。 すばらしいGoogle検索から、Makefile設定をVS IDEにインポートする際に自動化された機能がないようです。Makefileの設定をVS2005 IDEにインポートする
メイクファイルに記載されている必要な依存関係(ヘッダとlibファイル)をVSに書き込もうとしましたが、多くのリンクエラーが発生しました。私はこの問題を解決するためにどこを探し始めるべきかについてもさえわかりません。私は指導者が私を助けてくれることを願っています。
これは、メイクファイルの内容である:私はVSで
BASE = ..\..
!include $(BASE)\compiler.mak
!include $(BASE)\options.mak
CFLAGS =
# Define the string used in the executable file name
STACK_DEF = $(TCP_DEF)
!ifdef TCP_DEF
STACKS = tcp
!endif
CDEFS = $(STACK_DEF) $(AUTH_DEF) $(CLIENT_DEF) $(FILESERVICE_DEF)
TARGET = $(STACKS)$(NAMETAG).$(EXESUFFIX)
GOMDIR = $(BASE)\src\classlib
DIRMAKE = $(BASE)\src\make7
LIBDIR = $(BASE)\lib
OBJDIR = obj_$(NAMETAG)
EXEDIR = $(BASE)\exes
USERINC = $(BASE)\include
# These libraries are always included
TAMLIB = $(LIBDIR)\tam_$(NAMETAG).lib
TAMCLIB = $(LIBDIR)\tamc_$(NAMETAG).lib
MMSLIB = $(LIBDIR)\mmsc_$(NAMETAG).lib
# Optional libraries
!ifdef FILESERVICE_DEF
FILELIB = $(LIBDIR)\file_$(NAMETAG).lib
!endif
!ifdef TCP_DEF
TCPLIB = $(LIBDIR)\1006_$(NAMETAG).lib
TCPINC = $(USERINC)\rfc1006.h
!endif
!ifdef CLIENT_DEF
CLILIB = $(LIBDIR)\cli_$(NAMETAG).lib
TCLILIB = $(LIBDIR)\tcli_$(NAMETAG).lib
CLIINC = $(USERINC)\cliapi.h $(USERINC)\cli_cfg.h
!endif
SCLLIB = $(LIBDIR)\cscl_$(NAMETAG).lib
LIBS = $(TCPLIB) $(TCLILIB) $(CLILIB) \
$(TAMLIB) $(TAMCLIB) $(MMSLIB) $(FILELIB) $(SCLLIB)
INCLUDES = $(TCPINC) $(CLIINC)
CC = $(COMPILER)
INCFLAGS = /I$(DIRMAKE) /I$(USERINC)
SRC = conmain.c \
state.c \
scl_cli.c
OBJ = $(OBJDIR)\$(STACKS)main.$(OBJSUFFIX) \
$(OBJDIR)\state.$(OBJSUFFIX) \
$(OBJDIR)\scl_cli.$(OBJSUFFIX)
all: $(TARGET)
install: all
clean:
$(DELETE) $(OBJDIR)\$(STACKS)main.$(OBJSUFFIX)
$(DELETE) $(OBJDIR)\state.$(OBJSUFFIX)
$(DELETE) $(OBJDIR)\scl_cli.$(OBJSUFFIX)
$(DELETE) $(TARGET)
clobber: clean
$(TARGET): $(OBJ) $(LIBS)
$(LINK) $(LINKOUT)$(TARGET) @<<
$(OBJDIR)\$(STACKS)main.$(OBJSUFFIX)
$(OBJDIR)\state.$(OBJSUFFIX)
$(OBJDIR)\scl_cli.$(OBJSUFFIX)
$(LIBS)
$(WINDIS) $(SOCKLIB) $(REGLIB)
<<NOKEEP
$(OBJDIR)\$(STACKS)main.$(OBJSUFFIX): \
conmain.c \
database.h \
services.h \
scl_cli.h \
$(USERINC)\uca_time.h \
$(DIRMAKE)\tamvend.h \
$(USERINC)\tam.h \
$(USERINC)\tam_tp.h \
$(USERINC)\tam_con.h \
$(USERINC)\casm.h \
$(DIRMAKE)\clivend.h \
$(USERINC)\cliapi.h \
$(DIRMAKE)\mmsdapi.h $(INCLUDES)
$(CC) $(INCFLAGS) $(CFLAGS) @<<
$(CDEFS)
$(COMPOUT)$(OBJDIR)\$(STACKS)main.$(OBJSUFFIX)
conmain.c
<<NOKEEP
$(OBJDIR)\scl_cli.$(OBJSUFFIX): \
scl_cli.c \
scl_cli.h \
database.h \
services.h \
$(USERINC)\uca_time.h \
$(DIRMAKE)\tamvend.h \
$(USERINC)\tam.h \
$(USERINC)\tam_tp.h \
$(USERINC)\tam_con.h \
$(USERINC)\casm.h \
$(DIRMAKE)\clivend.h \
$(USERINC)\cliapi.h \
$(DIRMAKE)\mmsdapi.h $(INCLUDES)
$(CC) $(INCFLAGS) $(CFLAGS) @<<
$(CDEFS)
$(COMPOUT)$(OBJDIR)\scl_cli.$(OBJSUFFIX)
scl_cli.c
<<NOKEEP
$(OBJDIR)\state.$(OBJSUFFIX): \
state.c \
scl_cli.h \
database.h \
services.h \
$(USERINC)\uca_time.h \
$(DIRMAKE)\tamvend.h \
$(USERINC)\tam.h \
$(USERINC)\tam_tp.h \
$(USERINC)\tam_con.h \
$(USERINC)\casm.h \
$(DIRMAKE)\clivend.h \
$(USERINC)\cliapi.h \
$(DIRMAKE)\mmsdapi.h $(INCLUDES)
$(CC) $(INCFLAGS) $(CFLAGS) @<<
$(CDEFS)
$(COMPOUT)$(OBJDIR)\state.$(OBJSUFFIX)
state.c
<<NOKEEP
ました:
[1]新しい空のプロジェクト
は、[2]のソース(Cファイルとヘッダファイル)
をexisiting追加作成します。 [3]の追加は、インクルードディレクトリ:....// srcに/ make7
[4]追加のライブラリディレクトリ....含めると:
..../libに[5]プロジェクトをビルド...
ビルドしようとした後、VS出力に74のリンカエラーがあります。すべての未解決の外部シンボルエラー 例です:
scl_cli.obj : error LNK2019: unresolved external symbol _TAM_parse_address referenced in function _ResolveServerAddressscl_cli.obj : error LNK2019: unresolved external symbol _TAM_parse_address referenced in function _ResolveServerAddress
conmain.obj : error LNK2001: unresolved external symbol _MMSd_freeDsMemFunction
私は前にメイクファイルを扱っていませんでした。私はこの投稿が非常に初心者のスタイルとamatuer-ishと聞こえるかもしれない場合は謝罪します。私は新しいですが、私は喜んで学びます。
何かアドバイスやコメントをいただければ幸いです。
jjplaw
を私はVS 2005 C用に設定DDKで上記のコードを統合しなければならないので、私は、VS IDEに移行するように言われました++ 。オプション4は非常に面白いです。私はこれにgoogleする必要があります。それは私がVS IDEからのメイクファイルを読んで、exeをビルドするためにOMAKE(例えば)を呼び出すことができるということですか? それとも、別のビルドシステムを使用していますか?それはmakefileを使用せず、私はIDEにコンパイラとリンカのオプションを入力しましたか? – justin
「IDEの外部でコンパイルしてもデバッグに使用できないわけではありません。ブレークポイントを使用して時計を設定することはできますか? – justin
@justin、コメント2:IDEを使用して任意のプログラムをデバッグできます。あなたはC++プログラムやライブラリのためのソリューションから始め、デバッグ設定(パス、コマンドラインオプション、ソースディレクトリ)を入力するだけです。 – bltxd