**注意:为了确保代码块和编号步骤的格式正确,我与 MarkDown 编辑器进行了相当大的角力,但由于某种原因,一些元素仍然存在潜在的错误。我将尝试在以后的帖子中修复。目前,我选择至少以某种形式为您发布所要求的信息。
使用 Visual Studio 2008 作为基准工具,请执行以下步骤:
- 选择“文件->新建项目”
- 从“新建项目”对话框的“项目类型”列表中,在“其他语言”下的“Visual C++”下,单击“CLR”。
- 从“Visual Studio 已安装模板”列表中,单击“类库”
- 在“新建项目”对话框下半部分的名称框中,为您的项目提供一个名称。例如,使用“SampleCPPAssembly”
- Visual Studio 2008 将创建一个“shell”类和命名以匹配项目的头文件,例如 SampleCPPAssembly.h 和 SampleCPPAssembly.cpp
- 打开“SampleCPPAssembly.h”
- 将类的名称更改为“public ref class SampleClass”
- 在打开的花括号内,添加一个文本行,上面写着“public:”。这定义了包含类的公共方法的部分。
- 在“public:”声明下,插入以下内容:
static String ^ DecorateString(String ^ foo);
10. 保存文件。
11. 通过在解决方案资源管理器中双击打开“SampleCPPAssembly.cpp”。
12. 在“命名空间 SampleCPPAssembly”之后的花括号内,插入以下内容:
String ^ SampleClass::DecorateString(String ^ foo){
return gcnew String("*"+foo+"*");
}
13. 保存文件。
14. 从构建菜单中,选择“构建解决方案”。
15. 如果项目确实构建成功,请重新检查步骤 1-12 是否有任何可能的错误。
这样就完成了 C++ CLR 程序集的构建。我们现在努力创建一个简单的控制台应用程序来练习该方法。
- 在同一解决方案的“解决方案资源管理器”中,右键单击,然后选择“添加->新建项目”
- 在“其他语言”条目下的“Visual C++”下的“添加新项目”对话框中,选择“CLR”
- 从“Visual Studio 安装的模板”中选择“CLR 控制台应用程序”。
- 在“添加新项目”对话框底部附近的“名称”框中,键入“ConsumeSampleAssembly”
- 单击确定。
- 在“解决方案资源管理器”中,右键单击“ConsumeSampleAssembly”项目,然后选择“属性”。
- 在“属性页”对话框中,单击“通用属性”标题下方的“框架和引用”条目。
- 在对话框中间,单击“添加新引用...”按钮。
- 从“添加引用”对话框中,单击以选择“项目”选项卡。
- 从项目列表中,单击以选择“SampleCPPAssembly”
- 单击“确定”关闭“添加引用”对话框。
- 单击“确定”关闭“属性页”对话框。
- 在新创建的“ConsumeSampleAssembly”项目下的“Source Files”文件夹下,双击“ConsumeSampleAssembly.cpp”源文件。
- 在“使用命名空间系统;”的正下方,添加以下行:
using namespace SampleCPPAssembly;
15. 删除“int main(...)”后面的大括号之间的现有代码。(不要删除花括号。
16. 将花括号内的内容替换为以下内容:
Console::WriteLine(SampleClass::DecorateString(L"Hello"));
return 0;
17. 保存源文件。
18. 在编辑器中,就在左边界内,沿着包含“return 0;”的源代码行,单击以设置断点。这会导致调试器在应用程序运行时在此处停止,并允许您查看应用程序的结果。如果没有断点,应用程序将启动和完成太快而无法观察。
19. 在解决方案资源管理器中,右键单击“ConsumeSampleAssembly”项目,然后选择“设置为启动项目”。
19. 按 F5 编译并运行工程。
20. 你应该看到一个控制台窗口,输出“ Hello ”。
简介:您创建了一个包含单个方法 DecorateString 的 C++ CLR 程序集,该方法接受一个字符串作为参数并返回由星号包围的字符串。然后,您创建了一个简单的 C++ CLR 控制台应用程序,添加了对新程序集的项目引用,然后从“main(..)”方法调用了 DecorateString 方法,其值为“Hello”,该方法由该方法修改以“ Hello ”的形式返回。这表明您的 CLR 控制台应用程序正在成功调用 C++ CLR 程序集。
希望这可以帮助!