我们目前正致力于创建简单的Windows应用程序,它将加载dll文件并在dll中调用不同的方法。
以下是状态:
.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'**
哪个不正确,那么任何人都可以帮忙解决问题吗?
注意:
使用命令行时,上述方法完全正常,并在文件中写出正确的输出。
感谢您的帮助。
答案 0 :(得分:0)
我认为您正在尝试在托管c ++(c ++ / cli)上调用本机c / c ++ dll函数。 对? 那么......你试过PInvoke吗? 参考此页面 https://msdn.microsoft.com/en-us/library/ms235282.aspx