cl.exe 中有一个选项可以使用命令行属性 /ENTRY 在 DLL 中定义自定义入口点。不幸的是,它没有提供如何使用它的示例。
http://msdn.microsoft.com/en-us/library/f9t8842e%28v=vs.100%29.aspx
我创建了支持 /CLR 的托管 C++ DLL,并将主函数的名称替换为“Start”:
int Start(int argc, char *argv[])
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用以下 BAT 命令从命令行编译此 DLL:
"c:\Program Files\Microsoft Visual Studio 12.0\VC\bin\cl.exe" ^
/clr /Fo /Z7 /D "NDEBUG" ^
/ENTRY:Start ^
"..\Links\Links.cpp"
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到此错误:
LNK1561: Entry point must be defined
Run Code Online (Sandbox Code Playgroud)
问题:我到底应该传递什么作为 /ENTRY 参数?
编辑:正如下面 Hans 的评论中提到的,函数曾经是 DLL 中的入口点,需要有另一个签名,所以我更正了上面的示例。下面介绍的函数是 EXE 文件入口点的示例,特别是因为它的参数中有托管类型。
int Start(array<String ^> ^ argc)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)