• 2964阅读
  • 0回复

[提问]Qt调用带参数的dll崩溃 [复制链接]

上一主题 下一主题
离线moiit
 

只看楼主 正序阅读 楼主  发表于: 2012-03-05
Qt程序隐式调用如下dll,如果不带参数编译运行正常。
但一带参数,编译通过,一运行就崩溃。
请教问题出在什么地方?

//.pro中:
  1. LIBS            += -L ./ -lop


//op.h
  1. #ifndef OP_H
  2. #define OP_H
  3. #include <string>
  4. extern "C" __declspec(dllexport) void excute(std::wstring url);
  5. #endif // OP_H


Qt调用代码:

  1. std::wstring url=qstr_url.toStdWString();
  2.     excute(url);



VS2010制作的dll代码如下,

// op.cpp : 定义 DLL 应用程序的导出函数。
//

  1. #include "stdafx.h"
  2. extern "C" __declspec(dllexport) void excute(std::wstring url )
  3. {
  4.     STARTUPINFO start_info;
  5.     PROCESS_INFORMATION proc_info;
  6.     ::ZeroMemory(&start_info, sizeof(start_info));
  7.     start_info.cb = sizeof(start_info);
  8.     ::ZeroMemory(&proc_info, sizeof(proc_info));
  9.     
  10.     std::wstring browser = L"C:/Program Files/Internet Explorer/iexplore.exe";
  11.     //std::wstring url = L"http://china.com";
  12.     std::wstring command = browser + L" " + url;
  13.     LPWSTR command_line = new WCHAR[command.size() + 1];
  14.     wcscpy_s(command_line, command.size() + 1, command.c_str());
  15.     command_line[command.size()] = L'\0';
  16.     ::CreateProcess(NULL, command_line, NULL, NULL, FALSE, 0, NULL, NULL, &start_info, &proc_info);
  17.     if (proc_info.hThread != NULL) {
  18.       ::CloseHandle(proc_info.hThread);
  19.     }
  20.     if (proc_info.hProcess != NULL) {
  21.       ::CloseHandle(proc_info.hProcess);
  22.     }


快速回复
限100 字节
 
上一个 下一个