在C中使用.NET CF dll for WinCE

时间:2013-05-20 11:58:53

标签: mysql c windows-ce

我目前正在用C语言开发一个用于WinCE的库来使用Amazon Relational Database Service。这些API将有助于管理Amazon数据库实例,从而提供扩展数据库实例大小等功能。

我还需要提供API和功能来使用数据库。基本上,能够连接到数据库实例并运行INSERT,DELETE,UPDATE等查询。

如果我在C#中进行开发,这将变得更容易,因为.NET Compact Framework的dll可用,为我提供了MySQL连接器。所以我可以连接到Amazon RDS MySQL实例并执行各种查询。我需要在C中为WinCE提供此功能。

我尝试过的方法如下:

  1. 尝试使用LoadLibrary和GetProcAddress。我可以加载.NET CF dll但GetProcAddress失败。尝试了各种字符串组合来获取MySqlConnection的地址。即使这样可行(假设我当前做错了),我也不确定如何使用MySqlConnection或其他任何对象和方法。

  2. 我发现了托管CLR的问题。这似乎不起作用,因为我无法获取mscoree.dll,mscoree.h或库。一篇MSDN文章提到.NET CF不支持这一点。

  3. 提到的另一种方法是使用COM Interop。我只有.NET CF dll而不是C#源代码,所以我不确定这是否会起作用。据我所知,我需要有源代码,并在此处执行http://msdn.microsoft.com/en-us/library/aa645738(v=vs.71).aspx所示的内容。

  4. 我尝试使用CMake 2.8.11-rc4交叉编译完整的MySQL连接器源(可用于Windows平台的源),因为这会检测到我的WinCE6 SDK以及VS2008。配置本身失败。

  5. 任何人都可以建议完成我想做的事情的可行方法吗?我可能正朝着错误的方向前进。

2 个答案:

答案 0 :(得分:1)

你做不到。所需要的是EE Hosting,这意味着本机代码必须加载和托管执行引擎。 Compact Framework没有支持或能力来做到这一点。

出于同样的原因,您也无法在Compact Framework中创建COM组件。 COM基础结构无法加载托管类,因为它无法承载EE。

除非在托管进程中首先运行托管代码,否则根本无法获取本机代码来调用托管代码。基本上你必须创建一些必须运行的代理可执行文件,本机代码会通过IPC调用它。

答案 1 :(得分:0)

http://dev.mysql.com/doc/internals/en/client-server-protocol.html

我希望有人能告诉我这件事。更容易实现并完成上述工作。