c风格命名和c++命名

今天在提问里问了几个大牛一个问题,大牛们说得很深,我的资质有很浅,没办法,我只能自己琢磨了啊,下面是正题


 

//////////////////////////////////////////////////////////////////////////////////////////

7C9211FF  test        byte ptr [esi+10h],10h
7C921203  je          7C92FEF6
7C921209  pop         esi 
7C92120A  leave           
7C92120B  ret        
4   
7C92120E 
int         3   //这里是断点,
7C92120F  ret             
7C921210  mov         edi,edi
7C921212 
int         3   
7C921213  ret             
7C921214  mov         edi,edi
7C921216  mov         eax,dword ptr [esp
+4]
7C92121A 
int         3   
7C92121B  ret        
4   
7C92121E  mov         eax,dword ptr fs:[00000018h]
7C921224  ret             
7C921225  push        edi 
7C921226  mov         edi,dword ptr [esp
+0Ch]
7C92122A  mov         edx,dword ptr [esp
+8]
7C92122E  mov         dword ptr [edx],
0
7C921234  mov         dword ptr [edx
+4],edi


以上是发汇编代码,当时不知道咋回事,大牛们建议用TRY,但是试了很多次,都失败了(其实是我不会用try所致),无赖自己琢磨设断点,发现是自己调用的DLL出问题了,真奇怪,与使用vs的命令提示符去检查DLL,结果发现是对的,一切正常,而后打开该函数源文件,发现如下代码:

 

 

//
// MATLAB Compiler: 4.0 (R14)
// Date: Mon Aug 30 14:16:33 2010
// Arguments: "-B" "macro_default" "-W" "cpplib:libMyAdd" "-T" "link:lib"
// "filtertemp"
//

#ifndef __libmyadd_h
#define __libmyadd_h 1

#if defined(__cplusplus) && !defined(mclmcr_h) && defined(__linux__)
#  pragma implementation
"mclmcr.h"
#endif
#include
"mclmcr.h"
#include
"mclcppclass.h"
#ifdef __cplusplus
extern "C" {
#endif

extern bool libMyAddInitializeWithHandlers(mclOutputHandlerFcn error_handler,
                                           mclOutputHandlerFcn print_handler);
extern bool libMyAddInitialize();
extern void libMyAddTerminate();


extern void mlxFiltertemp(int nlhs, mxArray *plhs[],
                         
int nrhs, mxArray *prhs[]);

#ifdef __cplusplus
}
#endif

#ifdef __cplusplus

extern void filtertemp(int nargout, mwArray& y
                       ,
const mwArray& AD0, const mwArray& AD1);

#endif

#endif

 

 

///////////////////////////////////////////////////

怎么会这样啊??仔细想想才发现:libmyaddinitialize()是编译成c风格的了(加—下划线的),而我的编译器是vs,c++风格的(加奇怪符号的,),这就对了,将其注释不要,果然对了,,,,,但是很不辛,因为这个函数对于我调用的DLL进行了一些初始化,在我把它注释后发现,出现了内存不能读的现象,真的是两为其难啊,.....这是个棘手的问题。

你可能感兴趣的:(C++,c,matlab,dll,compiler,编译器)