调用在MASM中创建的库到C或c++
Calling a library made in MASM to C or C++
我一直在尝试调用一个用c语言编写的库。我已经设法从汇编MASM制作了一个.lib文件。但我不知道如何调用它到C语言作为一个库。这是.lib文件https://www.dropbox.com/s/d9d8cjbxmo51yqg/main.lib
需要帮助。由于
基本思想相当简单:
- 使用C调用约定编写(外部可见的)汇编语言函数。
- 为每个函数编写一个c兼容的原型/声明。
- 根据需要调用函数
一般的想法看起来像这样(警告:未经测试的代码):
; masm file
.model flat, c
.code
plus1 proc input:dword
mov eax, input
add eax, 1
ret
plus1 endp
end
C/c++头文件:
#ifdef __cplusplus
extern "C" {
#endif
int plus1(int);
#ifdef __cplusplus
}
#endif
调用代码:
#include "header.h"
int main() {
int x = plus1(14);
}
天哪。这是一个很大的问题。在visual studio中的32位masm .asm文件中,"。模型平,c"是关键。尤其是"c"。64位masm汇编不需要它,因为某些原因,它只是工作。但是,如果您尝试从汇编中的c++或C代码调用extern"C"定义的函数,32位将无法链接,并且它会抱怨未解析的符号,无论在asm中定义extern symbol: PROC。
这是一种奇怪的传统32位和64位。
除此之外,对于你的问题,我认为你只是想声明你的asm函数PUBLIC,只是"公共函数名"在你的asm,然后你不需要一个头或任何东西,只是用"extern"或extern"C"在你的调用C/c++代码定义它们,它会在汇编对象和链接中找到它们。
相关文章:
- 在 masm x64 上打印具有多个参数
- Windbg 将两个命令(MASM 和 C++)合二为一
- 在 MASM 中调用标准库函数
- 错误 A2022 和MSB3721在我尝试运行 C++/MASM 程序时出现
- Howo 使用 cl 预处理为 masm 组装生成一个单独的文件
- 用MASM编译汇编文件时,缺少表达式操作员
- 在X64模式下从C /CLI调用MASM PROC会产生意外的性能问题
- X86 MASM-通过并访问2D阵列
- 为 c++ 程序编写 MASM 函数
- 在MASM中调用C++函数
- 将内联GASM移植到x64 MASM访问冲突问题
- 检索x64 masm程序集过程的参数
- MASM 局部变量:动态分配的数据
- Masm DLL 过程在 for 循环中
- MASM 使用 VS 击败未优化的 .cpp 但不是未优化的 .c
- MASM修复DLL中的64位截断
- 使用交换方法x86 MASM反转程序集中的外部阵列
- 调用在MASM中创建的库到C或c++
- 如何将MASM数组传递给c++函数