What a strange thing in Maya command plug-in

Very simple maya command plug-in code.

#include
#include
#include
#include
class test : public MPxCommand {

 public:

  virtual MStatus doIt ( const MArgList& );
  static void* creator() { return new test; }

};

MStatus initializePlugin( MObject obj ) {

 MStatus stat;

 MFnPlugin plugin( obj, "wano", "1.0" );

 stat = plugin.registerCommand( "test", test::creator );

 if( !stat ) stat.perror( "registerCommand failed" );

 return stat;

}

MStatus uninitializePlugin( MObject obj ) {

 MStatus stat;

 MFnPlugin plugin( obj );

 stat = plugin.deregisterCommand( "test" );

 if( !stat ) stat.perror( "deregisterCommand failed" );

 return stat;

}

MStatus test::doIt( const MArgList& args ) {

 MGlobal::displayInfo( MString( "Hello " ) + args.asString(0).asChar() );

 return MS::kSuccess;

}
1. Load “testCmd” in the Plug-in Manager.
 

2. test “wano” prints out “Hello wano”.

3.

global proc aaa() {
 test "wano";
}

4.  “aaa” prints out “Hello wano”.

5. Unload “testCmd” in the Plug-in Manager.

6. Load “testCmd” in the Plug-in Manager.

7. “aaa”

 testCmd.mll이라는 명령어가 unload 되는 순간 aaa라는 명령어를 가리키고 있는 Maya 내부의 포인터가 자동으로 정상 해제가  지 않는 문제.

[solution 1]

Script Editor에 다음과 같이 aaa() 함수를 반드시 다시 입력해 준 다음 실행.

global proc aaa() {
 test "wano";
}

[solution 2]

MStatus initializePlugin( MObject obj ) 함수에 다음과 같은 line을 추가해줍니다.

MGlobal::sourceFile( MString( "aaa.mel" ) );

답글 남기기