Derelict

D.Rex via Digitalmars-d digitalmars-d at puremagic.com
Mon Dec 5 06:40:46 PST 2016


On Monday, 5 December 2016 at 13:54:01 UTC, Mike Parker wrote:
> On Monday, 5 December 2016 at 11:38:05 UTC, D.Rex wrote:
>> Hi,
>>
>> I am sure this has been asked a thousand times before, but can 
>> anyone link me to a tutorial on how to set up derelict and 
>> GLFW3, I am trying to work on a project and I just can't get 
>> it set up regardless of how many times I read the derelict 
>> readme's.
>
> See the Derelict documentation (linked from the README) on 
> using Derelict with DUB-managed projects [1]. Summary:
>
> Step 1: Make sure the GLFW 3 library is installed on your 
> system. On Windows, that means you just put the glfw3.dll in 
> the same directory in which your executable will reside. On 
> Mac, it's easiest to install with Homebrew (should be 'brew 
> install glfw' or 'brew install glfw3', can't recall which). On 
> Linux, use your package manager. Get the dev version of the 
> package if you want, but you don't need it with Derelict.
>
> Step 2: Add 'derelict-glfw3' as a dependency to your dub.json 
> or dub.sdl file (assuming you are using dub to manage your 
> project. If not, see the Derelict documentation using Derelict 
> packages with non-DUB projects [2]).
>
> For dub.json:
> "dependencies" : {
> "derelict-glfw3": "~>3.1.1"
> }
>
> For dub.sdl:
>
> dependency "derelict-glfw3" version="~>3.1.1"
>
> Step 3: Import derelict.glfw3.glfw3 and somewhere in your code, 
> preferably during startup, call DerelictGLFW3.load.
>
> ```
> import derelict.glfw3.glfw3;
> void main() { DerelictGLFW3.load(); }
> ```
>
> [1] http://derelictorg.github.io/building/with-dub/
> [2] http://derelictorg.github.io/building/without-dub/

I have done as you have said here, I have glfw3.dll into the same 
directory as the executable, and included the dependencies in the 
dub.json file, however when I run my intialization code, it gives 
me the following error:

derelict.util.exception.SharedLibLoadException at src\derelict-util\source\derelict\util\exception.d(35): Failed to load one or more shared libraries:
	glfw3.dll - Access is denied.
----------------
0x004166B3 in void 
derelict.util.exception.SharedLibLoadException.throwNew(immutable(char)[][], immutable(char)[][]) at L:\dev\D\DEngine\src\derelict-util\source\derelict\util\exception.d(67)
0x0041BA52 in void 
derelict.util.sharedlib.SharedLib.load(immutable(char)[][]) at 
L:\dev\D\DEngine\src\derelict-util\source\derelict\util\sharedlib.d(144)
0x00416A78 in void 
derelict.util.loader.SharedLibLoader.load(immutable(char)[][]) at 
L:\dev\D\DEngine\src\derelict-util\source\derelict\util\loader.d(197)
0x004169C2 in void 
derelict.util.loader.SharedLibLoader.load(immutable(char)[]) at 
L:\dev\D\DEngine\src\derelict-util\source\derelict\util\loader.d(143)
0x004168B1 in void derelict.util.loader.SharedLibLoader.load() at 
L:\dev\D\DEngine\src\derelict-util\source\derelict\util\loader.d(83)
0x00402028 in _Dmain at L:\dev\D\DEngine\src\app.d(13)
0x0041C263 in 
D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv
0x0041C227 in void rt.dmain2._d_run_main(int, char**, extern (C) 
int function(char[][])*).runAll()
0x0041C128 in _d_run_main
0x00403BA0 in main at L:\dev\D\DEngine\src\app.d(7)
0x00436AF5 in mainCRTStartup
0x73EF62C4 in BaseThreadInitThunk
0x77480719 in RtlSubscribeWnfStateChangeNotification
0x774806E4 in RtlSubscribeWnfStateChangeNotification

The code I have that runs derelictGLFW3.load() etc is as follows:

import derelict.opengl3.gl3;
import derelict.glfw3.glfw3;

int main()
{
	DerelictGL3.load();
	DerelictGLFW3.load();
	
	GLFWwindow* window;
	
	if(!glfwInit())
	{
		return -1;
	}
	
	window = glfwCreateWindow(1280,720, "D OpenGL Engine", null, 
null);
	if(!window)
	{
		glfwTerminate();
		return -1;
	}
	
	/* make window' context current */
	glfwMakeContextCurrent(window);
	DerelictGL3.reload();
	
	while(!glfwWindowShouldClose(window))
	{
		glfwSwapBuffers(window);
		glfwPollEvents();
	}
	
	glfwTerminate();
	return 0;
}


More information about the Digitalmars-d mailing list