批處理編譯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} {動態庫}
一般這個用得少,只能一個個的處理了。
你也可以,寫個批處理來進行。