我们可以使用'LoadLibrary'使用Visual Studio 2010和静态运行时编译应用程序吗? 我想要的是简单的C++程序,它可以用静态运行时< /St>( /Mt >代码> /MTD < /Calp>标志),并能够打开、调用等类< /强>和DLL的THARE函数(使用 LoadLibrary C++)。这样的事情可能吗?这不是不可能的。但要使其具有普遍性和可靠性,这是一个很长的路要走。C++中没有标准化的元数据格式,这可以让您知道您正在传递正确的参数。即使导出的类或函数的名称也不容易猜测,这是一个编译器实现细节
COM自动化就是解决这些问题的一个例子。包含在ActiveX测试容器中。或者Java或.Net托管语言中的反射支持。不C++。< / P> < P>我想你把事情搞得一团糟。仅仅因为它被称为“静态”运行时,它只是意味着标准C和C++库的代码被静态链接到应用程序中。通常,这不会对应用程序的功能造成任何限制 所有标准库类(如我们可以使用'LoadLibrary'使用Visual Studio 2010和静态运行时编译应用程序吗? 我想要的是简单的C++程序,它可以用静态运行时< /St>( /Mt >代码> /MTD < /Calp>标志),并能够打开、调用等类< /强>和DLL的THARE函数(使用 LoadLibrary C++)。这样的事情可能吗?这不是不可能的。但要使其具有普遍性和可靠性,这是一个很长的路要走。C++中没有标准化的元数据格式,这可以让您知道您正在传递正确的参数。即使导出的类或函数的名称也不容易猜测,这是一个编译器实现细节,c++,visual-studio,visual-studio-2010,static,runtime,C++,Visual Studio,Visual Studio 2010,Static,Runtime,COM自动化就是解决这些问题的一个例子。包含在ActiveX测试容器中。或者Java或.Net托管语言中的反射支持。不C++。< / P> < P>我想你把事情搞得一团糟。仅仅因为它被称为“静态”运行时,它只是意味着标准C和C++库的代码被静态链接到应用程序中。通常,这不会对应用程序的功能造成任何限制 所有标准库类(如ifstream)和函数(如printf)都将可用,无论它们的代码是在静态运行时的EXE内部还是在动态运行时的EXE外部。所有Win32函数,如LoadLibrary和GetPro
ifstream
)和函数(如printf
)都将可用,无论它们的代码是在静态运行时的EXE内部还是在动态运行时的EXE外部。所有Win32函数,如LoadLibrary
和GetProcAddress
,总是在常规Windows dll(如Kernel32.dll
)中的应用程序之外,因此它们当然不受运行时选择的影响
<>我想说,你真正的问题是尝试调用C++方法。Win32 API仅用于动态调用C函数。您将遇到的第一个问题是,由于存在错误,您将无法找到方法的名称。分配对象时可能也会遇到问题。我的直觉告诉我,要正常工作几乎是不可能的
这里有三个建议的替代方案,用C++来调用C++方法:<代码> GePosiTrave>代码>: