C# Visual Studio:使用CLR支持通过本机DLL调用显示表单应用程序 脚本: 在系统托盘上用C创建windows窗体应用程序App-1 创建一个本地非托管C++ DLL APP-2来控制Windows窗体应用程序,例如: 在系统托盘中打开/最小化App-1应用程序 在App-1上提供输入并执行操作 创建控制台应用程序App-3以测试App-2应用程序 解决方案:

C# Visual Studio:使用CLR支持通过本机DLL调用显示表单应用程序 脚本: 在系统托盘上用C创建windows窗体应用程序App-1 创建一个本地非托管C++ DLL APP-2来控制Windows窗体应用程序,例如: 在系统托盘中打开/最小化App-1应用程序 在App-1上提供输入并执行操作 创建控制台应用程序App-3以测试App-2应用程序 解决方案:,c#,c++,.net,visual-studio-2010,dll,C#,C++,.net,Visual Studio 2010,Dll,App-1: 我使用C语言中的Visual Studio 2010创建了一个简单的windows窗体应用程序,并生成了exe。它运行没有问题 为了通过另一个DLL控制此应用程序,我将此应用程序输出转换为DLL而不是EXE App-2: 我创建了一个简单的Win32 C++ DLL应用程序和启用/CLR特性。原因是,只有使用此选项,我才能从App-1导入代码,如下所示: #include "stdafx.h" #include "FormlessStarter.h" #include <

App-1: 我使用C语言中的Visual Studio 2010创建了一个简单的windows窗体应用程序,并生成了exe。它运行没有问题

为了通过另一个DLL控制此应用程序,我将此应用程序输出转换为DLL而不是EXE

App-2: 我创建了一个简单的Win32 C++ DLL应用程序和启用/CLR特性。原因是,只有使用此选项,我才能从App-1导入代码,如下所示:

#include "stdafx.h"

#include "FormlessStarter.h"

#include <stdexcept>

#using <mscorlib.dll>
#using <FormlessSysTry.dll>

using namespace FormlessSysTry;         //this does not work with /CLR option OFF

void __stdcall FormlessStart()
{
    FormlessSysTry::Program::Main();  //this is to call the App-1
}
问题: 当我尝试构建App-3时,我总是遇到如下错误,无法解决: DllTest.obj:错误LNK2019:未解析的外部符号_FormlessStart@0在函数\u wmain中引用

知道为什么会失败吗? 这是实现我的方案的正确方法吗

更新:
实际上,我有一个第三方windows应用程序,它不接受托管dll,只接受非托管dll。我想做的是在系统托盘中最小化一个新的windows窗体应用程序,它负责向我的网站提交数据。我想在事件发生时传递来自第三方应用程序的数据。第三个应用程序只能调用非托管DLL。因此,我希望将表单应用程序创建为非托管DLL,第三方应用程序将在初始化期间启动该DLL。表单应用程序启动后,它必须放在系统托盘上。只要第三方应用程序上的用户满意,它就应该在提交数据之前提交表单应用程序,以允许用户与其交互。希望我的描述清楚,并为我的英语道歉。

如果启用/CLR,它将不再是本机的非托管dll。没有上下文,您的设置就没有意义。也许如果你解释一下你想要实现什么,为什么表单必须被管理而dll不被管理,我们可以提出一个更好的设计。你必须使用u declspecdllexport来导出这个函数。并将app3链接到app2.hi@nvoigt生成的导入库,谢谢您的帮助。请参考我输入的更新,希望清楚。嗨@hans passant,我使用的是关键词,但同样的问题。谢谢
#include "FormlessStarter.h"
int _tmain(int argc, _TCHAR* argv[])
{
FormlessStart();
return 0;
}