我正在尝试使用Windows SDK中的mt.exe将清单添加到没有的清单,使用以下命令行:
C:\winsdk61>mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -updateresource:"r:\shared\hl33m.exe;#1"
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我这样做时,我收到此错误:
mt.exe : general error c101008c: Failed to read the manifest from
the resource of file "r:\shared\hl33m.exe". The specified resource
type cannot be found in the image file.
Run Code Online (Sandbox Code Playgroud)
当然在文件中找不到资源 - 文件没有清单,这就是我想添加一个的原因.
如何将清单附加到可执行文件?这不应该简单吗?
我有一个测试用例,我想为不同的数据库状态执行.我将对象插入到夹具中的DB(我想保持这种方式).我想为数据库中的不同配置创建DB虚拟化和专用夹具的初始化方法.
我能想到的一种方法是做一些事情:
void doTest(){
//test code here
}
BOOST_FIXTURE_TEST_CASE(test1, fixture1)
{
doTest();
}
BOOST_FIXTURE_TEST_CASE(test2, fixture2)
{
doTest();
}
BOOST_FIXTURE_TEST_CASE(test3, fixture3)
{
doTest();
}
Run Code Online (Sandbox Code Playgroud)
但是有更清洁,更整洁的方式吗?或许我不应该完全这样做?我将非常感谢测试专家给出的任何建议.
我有一个免注册的C++ COM组件,其清单我使用VS2010生成mt.exe.一切正常,除了我无法指定我的类使用哪个线程模型.我创建了一个小的repro项目,其生成的清单文件(RGS.dll.embed.manifest)如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="RGS.dll" hashalg="SHA1">
<comClass clsid="{4EB506E0-0D9C-4281-9B61-F027376E21C3}" tlbid="{6B48D06F-A84C-4B72-A70F-F1B091789E67}"></comClass>
<typelib tlbid="{6B48D06F-A84C-4B72-A70F-F1B091789E67}" version="1.0" helpdir="" flags="HASDISKIMAGE"></typelib>
</file>
<comInterfaceExternalProxyStub name="IRgsObject1" iid="{4620CAB8-3E56-42EC-818E-8A55DF9267B7}" tlbid="{6B48D06F-A84C-4B72-A70F-F1B091789E67}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
</assembly>
Run Code Online (Sandbox Code Playgroud)
我遇到问题的部分是comClass节点
<comClass clsid="{4EB506E0-0D9C-4281-9B61-F027376E21C3}"
tlbid="{6B48D06F-A84C-4B72-A70F-F1B091789E67}"></comClass>
Run Code Online (Sandbox Code Playgroud)
应具有threadingModel属性,如下页"Sxs和注册免费COM激活"示例所示:http: //blogs.msdn.com/b/junfeng/archive/2006/04/20/579748.aspx
我知道线程模型没有在中指定*.tlb,但是从Sen Harada对MSDN文档的评论中mt.exe,您应该能够在注册脚本文件中指定一个(*.rgs)
http://msdn.microsoft.com/en-us /library/windows/desktop/aa375649(v=vs.85).aspx
所以我有*.rgsATL向导创建的文件
HKCR
{
NoRemove CLSID
{
ForceRemove {4EB506E0-0D9C-4281-9B61-F027376E21C3} = s 'RgsObject1 Class'
{
ForceRemove Programmable
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Neutral'
}
TypeLib = s '{6B48D06F-A84C-4B72-A70F-F1B091789E67}'
Version …Run Code Online (Sandbox Code Playgroud) 清单工具mt.exe包含在 Windows SDK 中。但是完整的 SDK 很大并且包含很多内容,如屏幕截图所示。但是这些选项中的哪一个实际上包括mt.exe?
理想情况下,我只想安装最低限度才能在系统上安装此工具。
它在文档中确实说mt “在 Microsoft Windows 软件开发工具包 (SDK) 中可用” - 但就是这样,没有任何进一步的细节。