如何在vc++ 6.0项目中使用不需要.h和.lib文件的DLL
How to use a DLL without the need of its .h and .lib files in a VC++ 6.0 Project?
我不知道怎么做:
- 我使用的是MS Visual c++ 6.0 我有一个可编译的Win32 DLL项目。
- 我有另一个项目,这次是一个Win32控制台项目通过包含它的头文件和链接的.lib文件来创建DLLDLL。
现在我想有另一个项目,类似于第二个,但不使用头文件和lib文件。
这可能吗?我读到的所有地方都需要dll+lib+h或dll+h。如果认为如果知道接口,一个DLL文件就足够了吗?
顺便说一句,我所说的"使用DLL"是指使用DLL中定义的类和函数。
如果你只有普通的"extern C"函数,这是可能的。如果是这种情况,可以使用LoadLibrary
加载dll,然后使用GetProcAddress
导入每个函数,当然您需要知道函数签名以创建正确声明的函数指针。相反地使用类几乎是不可能的
如果您的DLL包含类,则很有可能它是COM组件。
如果是这种情况,#import指令(像#include一样使用)构建一些包含接口详细信息的临时包含文件。你应该使用COM来访问你的对象。
否则,如果你有一个带有c++类的'plain' DLL,你可以使用linkker:命令它转储映射(见这里)来访问导出的符号,以知道被扭曲的名称。但是我不认为手工创建界面是可能的。
相关文章:
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 为什么output_editor Concept不需要output_e迭代器标记
- 在除法中不需要四舍五入
- 与C代码相比,为什么C++代码不需要"#define _POSIX_C_SOURCE 200809L"?
- 将值从另一个数组写入数组,不包括不需要的值 C++
- C++ 写入路径名中包含不需要的空字符的文件
- 是否有必要获取锁并在不需要唤醒线程时通知condition_variable?
- 使用 assimp 加载模型 - 不需要提升?
- 为什么转换函数声明不需要至少一个定义类型说明符
- 返回不需要的值的二叉搜索程序
- 当我不需要数据库中的所有值时,如何部分初始化 c++ 对象?
- C++:用户输入会产生不需要的行为
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- 为什么python需要全局关键字而C/C++不需要?
- 将一个宏传递到另一个宏而不是直接传递内容时会出现不需要的额外"空"参数
- 为什么我们需要在 C++ 中检查空指针,而在 Java 中不需要?
- C++ CLR dll 需要 .lib 文件,但非 CLR 不需要
- 为什么隐式DLL链接需要相关的Lib文件,而显式链接不需要
- 如何在vc++ 6.0项目中使用不需要.h和.lib文件的DLL