【发布时间】:2012-06-29 20:06:53
【问题描述】:
我正在尝试在 C++/CLI 中编写一个包装 dll 以在 c# 中使用一些本机类。
为了测试,我创建了另一个使用 dll 的 C++/CLI 项目。
我的问题是,我想在测试项目的 dll 项目中使用本机类之一,但链接器抱怨它找不到此类成员的符号。
我猜这是因为没有定义原生类ref public。由于原生类代码是由 Google Protobuffers 编译器自动生成的,因此我无法在其中添加 ref public。
别误会,我不想在以后的c#项目中使用这个native class,而是想在Test项目中直接访问。
【问题讨论】:
-
你为什么不用protobuf-net?
-
因为下层应该尽量留c++
-
为什么会这样?你有什么实际原因吗?
-
同一个dll也wrapps需要调用另一个native c dll的函数。所以我必须将数据缓冲区从 c dll 编组到托管 c++/c#,然后使用 protobuf-net。此外,部分代码可以集成到纯 c++ 环境中也不是不可能的。至少,我查看了两个 .net protobuf 实现,并不真正喜欢这些接口。如果不可能,我将放弃Test项目访问本机类的想法,并提供来自dll的纯托管测试接口。
-
我刚刚重新检查了 protobuf-net API,我的问题是,它不使用标准的 .proto 文件。由于我们必须在不同平台之间共享一个 Protobuff 定义,因此别无选择。
标签: c++-cli native dllimport mixed-mode