能力值:
( LV2,RANK:10 )
|
-
-
2 楼
嘛意思没有理解.
你是不是说.你不想loadlibrary这样调用?
你想在程序里 直接就可以当函数应用?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
他所说的意思是编译成lib的静态连接库吧
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
是的,就是把这个dll编译成静态链接库,现在我已经知道方法了,只要修改编译选项就可以了:
ml /c /coff %1.asm
link -lib %1.obj
生成这个静态链接库后,我在汇编中写了一个调用函数,OpenFile proc szFileName :DWORD
在vc中我声明的是:extern "C" void _stdcall OpenFile(DWORD file);
这样应该没有错吧,但在调用这个函数的时候我是这样调用的
:char szOpenFile[512];
wsprintf( szOpenFile ,"%s","d:\\hello.txt");
OpenFile((DWORD)szOpenFile);
这样编译是没有问题的,但运行后却出错,不知道为什么
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
是我搞错了,不好意思
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
[QUOTE=NIU;370471]这两句有问题
改成:
char szOpenFile[512]="%s";
wsprintf( szOpenFile, "d:\\hello.txt" );[/QUOTE]
为什么要这样改阿
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
刚才我将汇编函数过程进行了修改,在汇编代码里修改为OpenFile proc szFileName :PTR CHAR
在vc调用里修改为
extern "C" void _stdcall OpenFile(char *file);
char szOpenFile[512];
lstrcpy(szOpenFile,"d:\\hello.txt");
OpenFile(szOpenFile);
编译链接也是没问题,但运行后还是出错,不知道怎么回事,郁闷
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
前面是我搞错了,不好意思。
刚才我将汇编函数过程进行了修改,在汇编代码里修改为OpenFile proc szFileName :PTR CHAR 汇编代码用原来的就行了,不用改的吧。在汇编里,stdcall的参数类型说到底都是DWORD,至于代表什么,自己定义就是了。
会不会是OpenFile函数与win原有的API函数重名导致?改一下函数名试试
|
|
|