批处理编译dll
❶ 如何用批处理实现vc2010工程的编译请高手指点,谢谢
用nmake.exe
命令语法如下:
NMAKE [option...] [macros...] [targets...] [@commandfile...]
说明:其中,options是NMAKE的选项,macros是在命令行中的宏定义,targets是NMAKE的目标文件列表,commandfile是包含命令行输入的文本文件(或响应文件)。
NMAKE 使用指定 /F 选项的Makefile(生成文件,通常名字是makefile);如果未指定 /F 选项,则使用当前目录下的Makefile。如果未指定Makefile,则 NMAKE 使用推理规则生成命令行 targets。
关键是这个makefile文件的编写。给你个例子 参考
BIN = cppunit
DEBUG = 1
# dynamic dll 1, static lib 2, exe 3
TARGET_TYPE = 1
# thread model, 0 single, 1 multiple static, 2 multiple dll
THREAD_MODEL = 2
CPU = x86
UNICODE = 0
CINCLUDE_PATH = /I. /I..\..\include
LLIBS =
DLLFLAGS =
CFLAGS = /W4 /Zc:forScope /Zc:wchar_t /EHsc
CFLAGS = $(CFLAGS) $(CINCLUDE_PATH)
!IF "$(UNICODE)" == "1"
CFLAGS = $(CFLAGS) /D"_UNICODE" /D"UNICODE"
!ENDIF
LDFLAGS = /NOLOGO /MACHINE:$(CPU)
LDFLAGS = $(LDFLAGS) $(LLIBS)
TARGET =
!IF "$(DEBUG)" == "1"
TARGET = $(BIN)d
CFLAGS = $(CFLAGS) /Od /Ob0 /ZI /D"_DEBUG"
LDFLAGS = $(LDFLAGS) /DEBUG
!ELSE
TARGET = $(BIN)
CFLAGS = $(CFLAGS) /O2 /Ob1 /Zi /D"NDEBUG"
LDFLAGS = $(LDFLAGS) /OPT:REF /OPT:ICF
!ENDIF
LINK_TOOL =
!IF "$(TARGET_TYPE)" == "1"
LINK_TOOL = LINK /DLL /MANIFEST:NO
TARGET = $(TARGET).dll
!ELSEIF "$(TARGET_TYPE)" == "2"
LINK_TOOL = LIB
TARGET = $(TARGET).lib
!ELSE
TARGET = $(TARGET).exe
LINK_TOOL = LINK /MANIFEST:NO
!ENDIF
!IF "$(THREAD_MODEL)" == "1"
!IF "$(DEBUG)" == "0"
DLLFLAGS = /MT
!ELSE
DLLFLAGS = /MTd
!ENDIF
!ENDIF
!IF "$(THREAD_MODEL)" == "2"
!IF "$(DEBUG)" == "0"
DLLFLAGS = /MD
!ELSE
DLLFLAGS = /MDd
!ENDIF
!ENDIF
CFLAGS = $(CFLAGS) $(DLLFLAGS)
SRC = \
AdditionalMessage.cpp \
Asserter.cpp \
BeOsDynamicLibraryManager.cpp \
BriefTestProgressListener.cpp \
CompilerOutputter.cpp \
DefaultProtector.cpp \
DllMain.cpp \
DynamicLibraryManager.cpp \
.cpp \
Exception.cpp \
Message.cpp \
PlugInManager.cpp \
PlugInParameters.cpp \
Protector.cpp \
ProtectorChain.cpp \
RepeatedTest.cpp \
ShlDynamicLibraryManager.cpp \
SourceLine.cpp \
StringTools.cpp \
SynchronizedObject.cpp \
Test.cpp \
TestAssert.cpp \
TestCase.cpp \
TestCaseDecorator.cpp \
TestComposite.cpp \
TestDecorator.cpp \
TestFactoryRegistry.cpp \
TestFailure.cpp \
TestLeaf.cpp \
TestNamer.cpp \
TestPath.cpp \
TestPlugInDefaultImpl.cpp \
TestResult.cpp \
TestResultCollector.cpp \
TestRunner.cpp \
TestSetUp.cpp \
TestSuccessListener.cpp \
TestSuite.cpp \
TestSuiteBuilderContext.cpp \
TextOutputter.cpp \
TextTestProgressListener.cpp \
TextTestResult.cpp \
TextTestRunner.cpp \
TypeInfoHelper.cpp \
UnixDynamicLibraryManager.cpp \
Win32DynamicLibraryManager.cpp \
XmlDocument.cpp \
XmlElement.cpp \
XmlOutputter.cpp \
XmlOutputterHook.cpp
OBJECTS = $(SRC:.cpp=.obj)
all : $(TARGET)
$(TARGET) : $(OBJECTS)
$(LINK_TOOL) $(LDFLAGS) $(OBJECTS) /OUT:$(TARGET)
.c.obj::
$(CC) /c $(CFLAGS) $<
#
.cpp.obj::
$(CC) /c $(CFLAGS) $<
#
clean :
del /q $(TARGET)
del /q $(OBJECTS)
del /q *.pdb
del /q *.idb
能用ide还是尽量用ide吧,多方便。
❷ 如何写一个批处理命令把当前文件夹下三个dll文件复制到C:\Windows\System32路径下
新建文本文档,粘贴以下内容:
cd /d %~dp0
*.dll %SystemRoot%\System32\
保存后,改txt后缀为bat,右击以管理员身份运行。看不到txt后缀的话,需要在文件夹选项查看里去掉隐藏已知文件类型的扩展名,或点查看并勾选文件扩展名。
如果要替换system32目录的系统dll,需要用nsudo软件启用全部特权运行bat文件。
❸ 批处理可以调用C里面的dll吗如果能,怎么调用呢,举个例子嘛,谢谢1
其命令行下的使用方法为:Rundll32.exe DLLname,Functionname [Arguments]
首先,请你做个小实验(请事先保存好你正在执行的程式的结果,否则...):点击“开始-程式-Ms-Dos方式”,进入Dos视窗,然后键入 rundll32.exe user.exe,restartwindows,再按下回车键,这时你将看到,机器被重启了!怎么样,是不是很有趣?
❹ 重新注册DLL文件,批处理
1.
新建一个文本文档,打开它
2.
把以下代码中复制进去
for
%%1
in
(%windir%\system32\*.dll)
do
regsvr32.exe
/s
"%%~1"
3.
文件-另存为,名字改成
A.bat
注意后缀一定要.bat
以后直接运行它,或者放到启动文件夹就可以了
❺ 帮我解释一下这个批处理!!说是判断软件随机创建的DLL的,不知道正不正确!
set finddate=2012-08-08
设定参数:finddate 的值为:2012-08-08
dir /l *.dll >>adfile.txt
将当前目录下(不包括下级目录)所有以dll为扩展名的动态链接库文件名(包括其生成日期、具体时间,注意:并不是在该目录的创建日期)以小写的形式,列表追加到adfile的文本文件中
for /f token=4 delims= " %%i in ('findstr /n“adfile.txt” %findate%') do (
ren %%i rubish
md %%i
)
在生成的文本文件中查找以上面的日期参数为关键字的文本行,如果匹配就在其行前加上行号,并将结果赋值给参数%1,将找到的结果更名为rubish,再以其建立一个目录。
综上所述仅仅以当前目录不包括下级目录,以固定日期判断文件是否为软件随机创建?该批处理并不能判断软件随机创建的DLL,因为好多软件中的动态链接库文件并不跟软件程序为同一日期和时间。
❻ bat批处理安装.net2.0框架,以及自动注册C#DLL
@echooff
startsetup.exe
Regsvr32/stest.dll
setup.exe替换成net2.0框架安装包的文件名。
test.dll替换成c#编译出的DLL文件。
此bat放于安装包和DLL同目录下执行。
如果不在同目录,需要添加两个文件的路径
❼ 怎么写bat文件来运行或加载.dll 文件
“echo off” DOS在运行批处理时, 会依次执行批处理中的每条命令, 并且会在显示器上显示, 如果你不想让它们显示, 可以加一个“echo off” "/u" 表示解除服务器注册 "/s" 无声,不显示消息框 "/i" 调用dllinstall ,给其传递一个可丫cmd line】跟...
❽ C++builder implib怎么批处理dll
implib.exe可以将dll生成lib文件。
【格式】: implib {生成名字的lib} {动态库}
一般这个用得少,只能一个个的处理了。
你也可以,写个批处理来进行。