Управляемый.net dll дает сбой на рабочем компьютере во время выполнения, но работает на компьютере разработчика

Строки с двойными звёздочками (**) вызывают сбой приложения на рабочей машине, но отлично работают на машине для разработки, я думаю, что CLR - это проблема??? Приложение скомпилировано с параметром /clr, чтобы разрешить использование dll?

#include <node.h>
#include <v8.h>
#include <iostream>
#include <string>

#include "odpconnection.h"
#include "helpers/helpers.h"

//dynamically linked libraries
** #using <System.dll>
** #using <System.Data.dll>
** #using <Oracle.DataAccess.dll>

using namespace std;
using namespace v8;
using namespace Helpers;
using namespace System;
using namespace System::Data;
using namespace Oracle::DataAccess::Client;

OdpConnection::OdpConnection(){}; //constructor
OdpConnection::~OdpConnection(){}; //destructor

 void OdpConnection::Init(Handle<v8::Object> target){
    Local<FunctionTemplate> tpl = FunctionTemplate::New(OdpConnection::New);
    tpl->SetClassName(v8::String::NewSymbol("OracleConnection"));
    tpl->InstanceTemplate()->SetInternalFieldCount(1); 
    //set attach functions to the prototype 
    tpl->PrototypeTemplate()->Set(v8::String::NewSymbol("open"), FunctionTemplate::New(Open)->GetFunction());
    tpl->PrototypeTemplate()->Set(v8::String::NewSymbol("close"), FunctionTemplate::New(Close)->GetFunction());
    tpl->PrototypeTemplate()->Set(v8::String::NewSymbol("dispose"), FunctionTemplate::New(Dispose)->GetFunction());
//set the constructor

    Persistent<Function> constructor = Persistent<Function>::New(tpl->GetFunction());
    target->Set(v8::String::NewSymbol("OracleConnection"), constructor);

}
//methods of the odpconnection class
Handle<Value> OdpConnection::New(const Arguments& args){
    HandleScope scope;
    OdpConnection* o = new OdpConnection();
    Oracle::DataAccess::Client::OracleConnection ^ cn;
    if(args[0]->IsString()){
        try {
            ** cn = gcnew Oracle::DataAccess::Client::OracleConnection(Helpers::String::ToSystemString(args[0]->ToString()));
        } catch (System::Exception ^e){
            ThrowException(v8::Exception::Error(Helpers::String::ToV8String(e->Message)));
            return scope.Close(Undefined());
        }
    }else{
       ThrowException(v8::Exception::TypeError(v8::String::New("String type arguments expected")));
       return scope.Close(Undefined());
    }
    ** o->connection = cn;
    //wrap to make the object avaliable to other methods*/
    o->Wrap(args.This());
    return args.This();
}

Важное примечание: сбой происходит во время выполнения.

0 ответов

Другие вопросы по тегам