我想在c ++程序中调用一些Haskell函数.
为了做到这一点,我已经应用了这些 指令并将它们改编为我的代码和系统.
我目前所拥有的是以下内容:
make文件如下:
CPP_SOURCES = main.cpp textures.cpp cpp/game.cpp \
cpp/piece.cpp cpp/factories.cpp cpp/utils.cpp
HASKELL_SOURCES = haskell/hello.hs
all: main; ./main
main: $(CPP_SOURCES) HaskellPart.o; g++ \
-lsfml-graphics \
-lsfml-window \
-lsfml-system \
-I/usr/lib/ghc/include \
-liconv \
-I/usr/lib/ghc/ghc-8.0.1/include \
-L/usr/lib/ghc/ghc-8.0.1 \
-L/usr/lib/ghc/rts \
-lHSrts \
-L/usr/lib/ghc/base-4.9.0.0 \
-lHSbase-4.9.0.0 \
-L/usr/lib/ghc/ghc-prim-0.5.0.0 \
-lHSghc-prim-0.5.0.0 \
-L/usr/lib/ghc/integer-gmp-1.0.0.1 \
-lHSinteger-gmp-1.0.0.1 \
-lHSghc-prim-0.5.0.0 \
-fno-stack-protector \
-Wall \
-o main $(CPP_SOURCES) haskell/hello.o
HaskellPart.o: $(HASKELL_SOURCES); ghc -fforce-recomp -fPIC …Run Code Online (Sandbox Code Playgroud) 我试图从c ++调用Haskell.
但是,我没有得到任何答案,所以我想重新制定一个最小的,完整的,可验证的例子.
我正在使用Debian,这就是我所拥有的(在同一个文件夹中):
C++:
// main.cpp
#include <iostream>
#include "Hello_stub.h"
int main(int argc, char** argv) {
hs_init(&argc, &argv);
std::cout << "Hello from C++\n";
helloFromHaskell();
hs_exit();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
哈斯克尔:
// hello.hs
module Hello where
foreign export ccall helloFromHaskell :: IO ()
helloFromHaskell :: IO ()
helloFromHaskell = putStrLn "Hello from Haskell"
Run Code Online (Sandbox Code Playgroud)
生成文件:
CPP_SOURCES = main.cpp
HASKELL_SOURCES = Hello.hs
CFLAGS = -Wall -g -fno-stack-protector
HFLAGS = -fforce-recomp
all: main; ./main
main: $(CPP_SOURCES) HaskellPart; g++ …Run Code Online (Sandbox Code Playgroud) 我试图运行这个:
def ReadWord(fid,fmt,Addr):
fid.seek(Addr)
s = fid.readline(2)
s = unpack(fmt + 'h', s)
if(type(s) == tuple):
return s[0]
else:
return s
Run Code Online (Sandbox Code Playgroud)
有:
len(s) = 2
len(fmt) = 1
calcsize(fmt) = 0
calcsize(fmt + 'h') = 2
Run Code Online (Sandbox Code Playgroud)
但是,Python返回:
struct.error:unpack需要长度为4的字符串参数
根据python struct.unpack 文档:
该字符串必须包含格式所需的数据量(len(字符串)必须等于calcsize(fmt)).
因此,如果我的字符串的长度是2并且calcsize fmt+'h'也是2,为什么python说"unpack需要一个长度为4的字符串参数"?
编辑:
谢谢你的所有答案.这是完整的代码:
http://qtwork.tudelft.nl/gitdata/users/guen/qtlabanalysis/analysis_modules/general/lecroy.py
因此,您可以在read_timetrace函数中看到,fmt设置为'<'或'>'在if...else语句中.打印确认了这一点.
但你也应该知道我正在使用windowsx64(工作).
EDIT2
这是完整的追溯,对不起这个错误.
Traceback (most recent call last):
File "C:\Users\maxime.vast\Desktop\Test Campaign Template\Test Suite\Include\readLecroyTRCFile.py", line 139, in <module> …Run Code Online (Sandbox Code Playgroud) 我有一些谷歌地图地理编码api的问题.
我正在使用Angular Google Maps并尝试使用回调函数对地址进行地理编码:
.controller('myCtrl', ['$scope', '$rootScope', 'uiGmapGoogleMapApi', function ($scope, $rootScope, uiGmapGoogleMapApi) {
// To be set by previous step
$rootScope.chosenTown = "Roma"
// geocode the given address
var geocodeAddress = function(address, callback) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
callback(results[0].geometry.location);
} else {
console.log("Geocode was not successful for the following reason: " + status);
}
});
};
// google maps is ready
uiGmapGoogleMapApi.then(function(maps) {
// geocode chosen town …Run Code Online (Sandbox Code Playgroud) javascript google-maps callback google-geocoding-api angularjs
我正在执行以下代码:
var languageMatcher = language.NewMatcher([]language.Tag{
language.English, // Default if no match
language.French,
})
lang, _ := r.Cookie("lang")
accept := r.Header.Get("Accept-Language")
var cookieValue = ""
if cookie != nil {
cookieValue = lang.String()
}
tag, _ := language.MatchStrings(languageMatcher, cookieValue, accept)
log.Debugf(ctx, fmt.Sprintf("Localized %s to %s. cookie: %s | header: %s", path, tag.String(), cookieValue, accept))
http.Redirect(w, r, "/"+tag.String()+path, 302)
Run Code Online (Sandbox Code Playgroud)
大部分来自 GoDoc
它在大多数情况下都能正常工作,但有时(从从未访问过该网站的计算机上以私有模式进行浏览时,或者从浏览器中删除整个缓存(无lang cookie)时);该language.MatchStrings函数在tag变量(如)中返回一堆垃圾en-u-rg-uszzzz。
这是我的log.Debugf输出:
Localized / to en-u-rg-uszzzz. cookie: | header: en-US,en;q=0.9
知道什么是错的吗?
c++ ×2
g++ ×2
ghc ×2
haskell ×2
angularjs ×1
callback ×1
go ×1
google-maps ×1
javascript ×1
python ×1