1

我目前正在为 WinCE 开发一个 C 库以与 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。配置本身失败。

任何人都可以建议完成我想做的事情的可能方法吗?可能是我看错了方向。

4

2 回答 2

1

你不能。所需要的称为 EE 托管,这意味着本机代码必须加载和托管执行引擎。Compact Framework 不支持或无法做到这一点。

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

除非首先在托管进程中运行托管代码,否则根本无法让本机代码调用托管代码。基本上,您必须创建某种必须运行的代理可执行文件,并且本机代码将通过 IPC 调用它。

于 2013-05-20T14:24:08.460 回答
0

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

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

于 2013-08-29T12:58:37.303 回答