2013-03-18 90 views
1

我使用eclipse和mingw编译器(C++)。 我想创建一个包含大量字符串的dll文件。 之后,我想与LoadString()打电话读取的字符串(http://msdn.microsoft.com/en-us/library/windows/desktop/ms647486(v=vs.85).aspx从dll获取字符串C++

我的dll文件:

#define WIN32_LEAN_AND_MEAN 
#define DLL_FUNC extern "C" __declspec(dllexport) 

DLL_FUNC int __stdcall Hello() { 

    return 0; 

} 

我的cpp文件:

#include <windows.h> 
#include <stdio.h> 

    int main() { 

    typedef int (__stdcall *HelloProc)(); 

     HMODULE hdll = LoadLibrary("HelloWorld.dll"); 
     if(hdll == NULL){ 
      MessageBox(HWND_DESKTOP, "Wrong dll path", "Message", MB_OK); 
     } 
     else { 
      typedef int (__stdcall *HelloProc)(); 

      HelloProc Hello = (HelloProc)GetProcAddress(hdll, "[email protected]"); 
      if(Hello == NULL){ 
       //LoadString(); 
       MessageBox(HWND_DESKTOP, "Hello is NULL", "Message", MB_OK); 
      } 
      else{ 
       Hello(); 
      } 
     } 

     return 0; 
    } 

如何创建的字符串?以及如何拨打LoadString()

回答

3

我想你想了解资源,这样你就可以构建一个只包含字符串表的资源DLL。尝试搜索你参考的东西,如资源编译器和也许如何建立一个资源DLL如何使用字符串表。我相信你会在微软找到文档和例子,如果没有的话,还可以在谷歌找到。

哦,你的DLL不是必需的只是资源,我从你的评论“我想创建一个包含很多字符串的dll文件”。如果你的DLL也包含代码,它实际上更容易(也许更简单)。然后你想搜索添加资源到一个DLL和类似的东西。

+0

Stringtable对我很有好处。但如何在dll文件中创建字符串表?我发现这个:http://stackoverflow.com/questions/2248786/builder-c-creating-stringtable-in-resource但如果我编译这我得到这个错误: 错误:'STRINGTABLE'没有命名一个类型。我认为它不足以在dll文件 – user1601401 2013-03-18 19:32:30

+1

@ user1601401中,您需要使用_resource compiler_编译资源,因为它们不是C/C++的一部分。您可能需要从Microsoft下载完整的SDK(我认为它们可以免费获得)以获得副本,或者您可能已经拥有SDK中的副本。在你的SDK文件夹树中找一个名为'rc.exe'的程序,就是这样。 – 2013-03-18 19:35:32