The following worked for me, using v3 of Scriptbasic (32bit) under Win7-64:
'---------------------------------
'USING OXYGEN WITH SCRIPTBASIC DYC
'---------------------------------
'ScriptBasic
import "c:/scriptbasic32/include/dyc.bas"
'OXYGEN SOURCE CODE
'------------------
src="""
print "Greetings from OxygenBasic!"
""" & chr$(0)
dyc::dyc("ms,i,OXYGEN.DLL,o2_mode,L",0)
dyc::dyc("ms,i,OXYGEN.DLL,o2_basic,Z",src)
'how do we make dll calls that have no arguments?
'TRY THIS
e=dyc::dyc("ms,i,OXYGEN.DLL,o2_error,C")
'e=0
if e=0 then
dyc::dyc("ms,i,OXYGEN.DLL,o2_exec,L",0)
endif
Regarding strings, have you tried returning a POINTER by specifying "P" as the return type? Not sure it it would work, but I'm just saying.....
A.