2017-12-30 73 views
0

Im은 Visual Studio 2015의 프로젝트에서 C++와 함께 Lua를 사용합니다. Luarocks를 사용하여 socket/core.dll 및 mime/core.dll을 만들었습니다. 내 C++ 프로그램이 실행되는 디버그 폴더에 core.dll을 추가했습니다. 루아에서 얻은 에러는 "require ("socket ")"이 실행될 때 생성됩니다.local socket = require ("socket"), 모듈 'socket'을 찾지 못했습니다.

...s\Visual Studio 2015\Projects\RaceGame3\Debug\Client.lua:17: module 
'socket' not found: 
    no field package.preload['socket'] 
    no file 'C:\Users\Username\Documents\Visual Studio   
2015\Projects\RaceGame3\Debug\lua\socket.lua' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\lua\socket\init.lua' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\socket.lua' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\socket\init.lua' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\..\share\lua\5.3\socket.lua' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\..\share\lua\5.3\socket\init.lua' 
    no file '.\socket.lua' 
    no file '.\socket\init.lua' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\socket.dll' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\..\lib\lua\5.3\socket.dll' 
    no file 'C:\Users\Username\Documents\Visual Studio 2015\Projects\RaceGame3\Debug\loadall.dll' 
    no file '.\socket.dll' 

그래서 정리해 : 다음 C++ 프로젝트를 실행하는 동안 어떻게 제대로 내 현재 루아 인스턴스에 core.dll 또는 다른 luasocket 파일을 링크 할 다음 오류가 내가 무엇을 얻을?

+0

나는 luasocket 소스를 보면 "메이크"그것은 대상으로 말한다 버전 5.1 및 5.2하지만 버전 5.3을 사용하고 있습니다 ... 또한 인터넷에서 "정적으로 링크하는"luasocket을 필요로할지 모르지만 확실하지 않은 이유는 무엇입니까 – mlgProfessional

답변

0

나는 변경하여 유사한 문제를 해결 한 require에 : 당신은 로컬에서 찾을 수 있습니다 socket라는 이름의 폴더 안에 core.dll 또는 PATH에있는 경우에만 물론, 작동

require("socket.core") 

/package.cpath

core.dllsocket.dll으로 바꿀 수 있으며 검색 가능한 폴더에 넣을 수 있습니다.

내가 아는 한 문제는 필요한 이름과 실제 dll 이름이 단순히 일치하지 않는다는 것입니다.

편집 : 안전을 재생하려면, 나는 다음과 같이 로컬, 함께 루아 모듈과 DLL을 넣어했습니다

socket 
├── core.dll 
├── ltn12.lua 
├── mime.lua 
├── mime-1.0.3.dll 
├── socket 
│   ├── ftp.lua 
│   ├── headers.lua 
│   ├── http.lua 
│   ├── smtp.lua 
│   ├── tp.lua 
│   └── url.lua 
└── socket.lua 
+0

폴더/libs/socket/core.dll 루아 코드를 "local socket = require ("libs.socket.core ")로 변경 한 후" 영어로 번역 된 또 다른 오류는 "주어진 모듈을 찾을 수 없습니다."입니다. socket.dll으로 .dll 파일의 이름을 변경하면 일반 경로 오류가 나타납니다. – mlgProfessional

+0

"지정한 모듈을 찾을 수 없습니다.", 그래서 그것은 .dll을 찾을 수 있지만 그것을로드 할 수 없습니다 – mlgProfessional

+0

내 설치 dll과 lua 파일을 함께 포장, luasocket 내게 문제가 물건을 찾는주고 있기 때문에. 내 dll/lua 파일을 어떻게 보관하고 있는지 보여주는 대답을 편집했습니다. –