Dentro de mi contrato, quiero usar una import
palabra clave para cargar otros contratos y bibliotecas para que mi código sea más limpio. Como ejemplo, llevé el contrato DateTime.sol a otro archivo y lo importé dentro del archivo myContract sin ningún problema.
miContrato.sol:
import "/Users/avatar/populus/contracts/DateTime.sol"; //works.
contract myContract{
DateTime date = new DateTime(); //does not work.
<Some_Code>
}
Pero desde el contrato myContract, cuando intento llamar al contrato DateTime como: DateTime date = new DateTime()
Me he encontrado con el siguiente error:
/usr/local/lib/python2.7/site-packages/populus/chain.py:580: in get_contract
if contract_name not in self.contract_factories:
/usr/local/lib/python2.7/site-packages/populus/utils/functional.py:50: in __get__
res = instance.__dict__[self.name] = self.func(instance)
/usr/local/lib/python2.7/site-packages/populus/chain.py:198: in contract_factories
compiled_contracts = self.project.compiled_contracts
/usr/local/lib/python2.7/site-packages/populus/project.py:153: in compiled_contracts
optimize=True,
/usr/local/lib/python2.7/site-packages/populus/compilation.py:42: in compile_project_contracts
compiled_sources = compile_files(contract_source_paths, **compiler_kwargs)
/usr/local/lib/python2.7/site-packages/solc/main.py:129: in compile_files
**kwargs
/usr/local/lib/python2.7/site-packages/solc/utils/string.py:91: in inner
return force_obj_to_text(fn(*args, **kwargs))
E Dynamic exception type: boost::exception_detail::clone_impl<dev::solidity::InternalCompilerError>
E std::exception::what: std::exception
E [dev::tag_comment*] = Compiled contract not found.
Pero cuando DateTime contract
estaba incrustado dentro myContract.sol
del archivo, pude llamar DateTime date = new DateTime();
desde el myContract
contrato sin tener ningún problema. He utilizado el siguiente enfoque: cómo llamar a un contrato desde un enfoque de contrato existente .
miContrato.sol:
contract myContract{
DateTime date = new DateTime(); //works now.
<Some_Code>
}
contract DateTime{
<Some_Code>
}
[P] Probé este enfoque en Solidity Browser y funciona. ¿Cómo podría solucionar este problema en Populus?
Alguna información:
solc --version: la interfaz de línea de comandos del compilador de solidity Versión: 0.4.8+commit.60cc1668.Darwin.appleclang
Gracias por su tiempo y ayuda.
El error que tiene no está relacionado con Populus:
Dynamic exception type: boost::exception_detail::clone_impl<dev::solidity::InternalCompilerError>
E std::exception::what: std::exception
Dice que Solidity no puede compilar su contrato debido a un error. Repita el problema compilando manualmente los contratos desde la línea de comando y luego emitiendo un informe de error contra Solidity con pasos repetibles.
Además, actualice su Solidity a la última versión antes de hacer esto.
alper
solc
, pero todavía me enfrento al mismo problema. Tampoco puedo importar archivos library.sol.mikko ohtamaa