VS的DLL项目可以使用/返回CLR类型吗?

时间:2011-06-01 22:51:00

标签: .net visual-studio visual-studio-2008 visual-c++ dll

我正在尝试编写一个DLL来做一堆事情,包括文件I / O,字符串拆分,处理,输出大量信息。我使用的是VS2008,.net 3.5,C ++

我遵循了这篇文章

http://msdn.microsoft.com/en-us/library/ms235636.aspx

首先,我在解决方案中构建一个调用者(测试人员)项目并尝试在dll中调用测试函数,这样可行。所以我继续打开DLL中的CLR编译标志,这样我就可以更容易地进行字符串处理。但这给了我一个链接错误。我尝试在调用者项目中打开CLR编译标志,突然我有两个链接错误。

如何才能在DLL中使用CLR并将结果作为对象返回给调用者?

2 个答案:

答案 0 :(得分:0)

是的,您可以通过DLL边界处的平面API传递CLR类型。但只有其他基于C ++的/ clr代码才能使用它们。并且由于流程只有一个IAT,如果您有多个应用程序域,这将无法正常工作。

传递托管类型的推荐方法是通过直接管理引用。

马丁

答案 1 :(得分:0)

将您的功能放在

public ref struct

然后使用托管类型参数和返回值变得非常简单。

如果要在不先创建对象的情况下调用函数,请将它们设置为静态。