私は現時点でVisual Studioを使用しています。私は、Win32アプリケーションを構築する必要があるとC関数からプロシージャを呼び出す必要があるが、私は常にビルドエラーを取得しています:.cからMASM32プロシージャを呼び出す
エラー3エラーLNK1120:1つの未解決の外部
私がダウンしてシンプルにすべてが減少していますメイン関数と単純な.asmファイルを1つのプロシージャと私はまだ同じビルド(またはむしろリンク)エラーを取得しています。私は迷っている。
どちらもcdecl規則を使用しています。
MASM32コード(独自の.ASMファイル内):
.MODEL FLAT, C
.DATA
.CODE
PUBLIC memory_address
memory_address PROC
mov eax, DWORD PTR [esp]
ret
memory_address ENDP
END
それは罰金組み立てます。 .cファイル:
#include <stdlib.h>
#include <malloc.h>
#include <stdio.h>
extern int memory_address(int* ptr);
void main()
{
int *ptr = (int*)malloc(sizeof(int));
memory_address(ptr);
while (1) {}
return;
}
これはなぜ起こっているのでしょうか。私はMASMを問題なく64ビットアプリケーションに約1年ほど喜んで使用してきました。しかし、私は32ビットアプリケーションを作る必要があります。私はMASM32 proc memory_address()を呼び出す運がありません。
私はこれをNASMで32ビットアプリケーション用に行う方法を知っています。私はMASMを使用して64ビットアプリケーションを実行する方法を知っています。これは厳密にMASM32の問題です。どんな提案も素晴らしいでしょうが、MASM32のためだけです。ありがとう。
私はあなたがMASM32のための答えをしたい知っているが、どのようにあなたはNASMでこれを行うのですか?それも表示できますか?あなたの質問を編集して、うまくいったNASMコードを表示してください。 –
masmプロシージャの名前に先行するアンダースコアを追加してみてください。 – anatolyg
また、あなたが引用したエラーの直前に、それが見つけようとする名前は言及していませんか? – anatolyg