Qt程序隐式调用如下
dll,如果不带
参数,
编译运行正常。
但一带参数,编译通过,一运行就崩溃。
请教
问题出在什么地方?
//.pro中:
//op.h
- #ifndef OP_H
- #define OP_H
- #include <string>
- extern "C" __declspec(dllexport) void excute(std::wstring url);
- #endif // OP_H
Qt调用代码:
- std::wstring url=qstr_url.toStdWString();
- excute(url);
VS2010制作的dll代码如下,
// op.cpp : 定义 DLL 应用程序的导出函数。
//
- #include "stdafx.h"
- extern "C" __declspec(dllexport) void excute(std::wstring url )
- {
- STARTUPINFO start_info;
- PROCESS_INFORMATION proc_info;
- ::ZeroMemory(&start_info, sizeof(start_info));
- start_info.cb = sizeof(start_info);
- ::ZeroMemory(&proc_info, sizeof(proc_info));
-
- std::wstring browser = L"C:/Program Files/Internet Explorer/iexplore.exe";
- //std::wstring url = L"http://china.com";
- std::wstring command = browser + L" " + url;
- LPWSTR command_line = new WCHAR[command.size() + 1];
- wcscpy_s(command_line, command.size() + 1, command.c_str());
- command_line[command.size()] = L'\0';
- ::CreateProcess(NULL, command_line, NULL, NULL, FALSE, 0, NULL, NULL, &start_info, &proc_info);
- if (proc_info.hThread != NULL) {
- ::CloseHandle(proc_info.hThread);
- }
- if (proc_info.hProcess != NULL) {
- ::CloseHandle(proc_info.hProcess);
- }