lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It seens to be a c++ file so name mangling is used and printMe symbol
does not exist. Rename your file into DLLtest.c or declare your
function with extern "C" if you want to use c++



On Sat, May 7, 2011 at 7:12 PM, Kaj Eijlers <bizziboi@gmail.com> wrote:
> Hi,
> I'm playing around with LUAJit 2.0 and loving it so far. The FFI is amazing,
> but being a C programmer I wanted to try to at least create and bind a DLL
> of my own.
>
> But...even my simplest attempt fails...sure I get the DLL and would believe
> I did the right thing:
> It compiles find and creates the DLL (code at the end of the message).
>
> However, I am obviously missing something with this because:
>
> local ffi  = require( "ffi" )
> local libb = ffi.load("dlltest.dll")
> print(libb)
> ffi.cdef[[
>  void printMe(void);
> ]]
> libb.printMe()
> yields:
> userdata[0x0027d948]
> luajit32: glfw-triangle.lua:10: cannot resolve symbol 'printMe': The
> specified p
> rocedure could not be found.
> stack traceback:
>         [C]: in function '__index'
>         glfw-triangle.lua:10: in main chunk
>         [C]: ?
>
> Which kinda suggests my symbol was not exported correctly by me.
>
> Environment x86/MSVC/Win7
>
> Anybody have any pointers? DLL tutorials don't seem to mention much more
> than 'use dllexport'.
>
> Thanks,
> Kaj
>
> ---------------------------------------------------------------------
>
> // DLLTest.cpp : Defines the exported functions for the DLL application.
>
> //
>
> #include
>
> "stdafx.h"
>
> #include
>
> <stdio.h>
>
> __declspec
>
> (dllexport) void printMe( void )
>
> {
>
> printf(
>
> "Hello\n");
>
> }