1

有谁知道我如何将它(从 C#)转换为 C++?

string location = Path.GetDirectoryName(Assembly.GetAssembly(typeof(ZigbeeCommUSB)).CodeBase);
location = location.Substring(location.IndexOf("\\") + 1);

谢谢。

编辑:附加信息

这是从 C# 转换为本机 C++。如果有另一种方法来获取当前执行的可执行文件的文件路径,我愿意接受。谢谢。

4

2 回答 2

1

要检索当前可执行文件的路径,请使用带有 NULL hModule 参数的GetModuleFileName 。

于 2011-01-21T14:45:47.160 回答
1

来自上述链接的 Assembly.GetAssembly 示例

Assembly^ SampleAssembly;
// Instantiate a target object.
Int32 Integer1(0);
Type^ Type1;
// Set the Type instance to the target class type.
Type1 = Integer1.GetType();
// Instantiate an Assembly class to the assembly housing the Integer type.  
SampleAssembly = Assembly::GetAssembly( Integer1.GetType() );
// Gets the location of the assembly using file: protocol.
Console::WriteLine( "CodeBase= {0}", SampleAssembly->CodeBase );

如果您结合以上内容,您可能会更接近您想要做的事情。如果这将在 Native C++ 中完成,您将遇到更多问题,有一种称为“Fusion API”的东西可能会帮助您在 GAC 中查找程序集。

于 2011-01-20T22:33:22.153 回答