Qt调用带参数的dll输出函数崩溃

moiit 2012-03-05 05:25:52
Qt程序隐式调用如下dll,如果不带参数,编译运行正常。
但一带参数,编译通过,一运行就崩溃。
请教问题出在什么地方?

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


//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);
}
...全文
257 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
moiit 2012-03-06
  • 打赏
  • 举报
回复
谢谢回复!
这个头文件是我自己在qt程序中手动加的,只是为了隐式调用dll方便。在写dll时并没有输出头文件。
无论在这个头文件中写成dllimport或者dllexport,结果都还是崩溃。
看起来似乎不是这个问题。

另外,我上面提供的dll导出函数文件op.cpp是完整的,就只差一个“}”。
如果您有时间,可以直接用这个op.cpp制作一个dll。
然后用一个Qt控制台程序进行调用看看。其实对于你们高手来说,应该花不了多少时间。

我会加分的。
dext 2012-03-06
  • 打赏
  • 举报
回复
为了使用同一个头文件。 一边要用 dllexport 一边要用 dllimport 这个最好加个编译开关解决。
moiit 2012-03-06
  • 打赏
  • 举报
回复
不行啊, 在//op.h中加入stdcall后编译出错:undefined reference to `excute@4'
#ifndef OP_H
#define OP_H
#include <string>
extern "C" __declspec(dllexport)__stdcall void excute(std::wstring url);
#endif // OP_H
dext 2012-03-05
  • 打赏
  • 举报
回复
STDCALL

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧