我正在尝试编写一个DLL来做一堆事情,包括文件I / O,字符串拆分,处理,输出大量信息。我使用的是VS2008,.net 3.5,C ++
我遵循了这篇文章
http://msdn.microsoft.com/en-us/library/ms235636.aspx
首先,我在解决方案中构建一个调用者(测试人员)项目并尝试在dll中调用测试函数,这样可行。所以我继续打开DLL中的CLR编译标志,这样我就可以更容易地进行字符串处理。但这给了我一个链接错误。我尝试在调用者项目中打开CLR编译标志,突然我有两个链接错误。
如何才能在DLL中使用CLR并将结果作为对象返回给调用者?
答案 0 :(得分:0)
是的,您可以通过DLL边界处的平面API传递CLR类型。但只有其他基于C ++的/ clr代码才能使用它们。并且由于流程只有一个IAT,如果您有多个应用程序域,这将无法正常工作。
传递托管类型的推荐方法是通过直接管理引用。
马丁
答案 1 :(得分:0)
将您的功能放在
中public ref struct
然后使用托管类型参数和返回值变得非常简单。
如果要在不先创建对象的情况下调用函数,请将它们设置为静态。