c - 以编程方式生成 C Win32 DLL

标签 c winapi compiler-construction

我需要反复生成一个带有注册信息功能的Win32 DLL。此函数使用文字返回客户特定的注册信息,并为每个客户构建一个单独的 DLL。

我有一个正常工作的测试版本,其中包含一位客户的硬编码信息。某些站点的紧迫性要求我手动生成一些 DLL,但我想为客户提供一个动态发出 C 源代码并按需构建 DLL 的应用程序。

最好的方法是什么?我有 VS 2008 C++ Express,因此有 cl.exe 编译器。我目前的方法只是让 C# 应用程序为 C 源代码提供一个字符串常量,并在生成之前用所需参数替换其中的标记,然后通过脱壳并运行 cl.exe 来构建和链接。

最佳答案

将所有客户信息作为字符串资源放在.rc 文件中。将相应的 .res 文件链接到您的 DLL 中。 DLL 中依赖于该客户信息的所有代码都将调用 LoadString 来获取此信息。

然后构建一个名为“UpdateDLL.exe”的单独程序(或函数),它使用 Win32 API:BeginUpdateResource、UpdateResource 等...以使用新信息更新 DLL。

运送以下元素:

  1. 一个预编译的 DLL,其中包含用于资源中客户信息的空(或默认)字符串。

  2. 您的 UpdateDLL.exe 工具将 DLL 名称和客户信息文件作为命令行参数。

  3. 您的客户运行“UpdateDLL.exe customer.dll myinfo.txt”以使用他的信息更新他的 DLL 副本。

关于c - 以编程方式生成 C Win32 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842941/

相关文章:

c - 散列密码并使用 C 中的签名进行检查

java - JVM 语言互操作性

C 到硬件编译器(HLL 综合)

将 wchar_t 转换为 CFStringref

c - 为什么 double 在 MINIX 3 中不起作用?

c - 如何在C中将数字字符串存储为无符号整数

c++ - 组合 std::strings 和 C-Strings 导致缓冲区溢出

C++11 和 Win32 wchar_t

c++ - TrackMouseEvent 不工作

compiler-errors - 词法分析器将 5abc 识别为什么样的标记?还是错误?