使用C ++将字符串传递给Windows应用程序中的dll mehods

时间:2016-04-04 11:13:41

标签: c++ winforms dll

我们目前正致力于创建简单的Windows应用程序,它将加载dll文件并在dll中调用不同的方法。

以下是状态:

  1. Windows应用程序设计 - >行
  2. 从UI点击按钮加载.dll - >好的
  3. 在用户界面点击按钮时调用.dll文件中的方法 - >好的
  4. 点击按钮时将字符串传递给.dll方法 - > NOK
  5. .dll中的方法

        sendReqXml(char *xmlString) 
        {   
        printf("\nsendReqXml() +\n");
    
        //we will write xmlstring in file here to check what we received  from  UI console
    
        FILE *out;
    
        if ((out = fopen("C:\\Users\\20105388\\Desktop\\textfile.txt", "w")) != NULL)
         {
           fprintf(out, "the range is '%s'\n", xmlString);
           fclose(out);
         }
    
          //.... then proceed further 
        }
    

    UI控制台方法

    private: System::Void button2_Click(System::-Object^  sender, System::EventArgs^  e)
    {
      char *xmlFile = "I am sending text from UI";
      DLLSEND _SENDXML;
      _SENDXML = (DLLSEND) GetProcAddress(hGetProcIDDLL, "sendReqXml");
    
     if (_SENDXML != NULL)
       {
         _SENDXML(xmlFile);
       }
    }
    

    我们只是尝试在sendReqXml方法中打印文件中的字符串,以检查我们从UI收到的内容。

      fprint(out,"the range is '%s'\n", xmlString); 
    

    我们从UI传递的任何字符串,上面的方法写入文件

    中的输出
      **the range is '„¹&Z'**
    

    哪个不正确,那么任何人都可以帮忙解决问题吗?

    注意:

    使用命令行时,上述方法完全正常,并在文件中写出正确的输出。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试在托管c ++(c ++ / cli)上调用本机c / c ++ dll函数。 对? 那么......你试过PInvoke吗? 参考此页面 https://msdn.microsoft.com/en-us/library/ms235282.aspx