2014-09-11 1 views
9

Я пытаюсь построить (идти строить) следующее:Почему я получаю «дублируемую ссылку на символ» при включении двух библиотек на основе cgo?

package main 

import (
    "fmt" 
    _ "github.com/d2g/unqlitego" 
    _ "github.com/mattn/go-sqlite3" 
) 

func main() { 
    fmt.Println("Erm Compile?") 
} 

и я получаю сообщение об ошибке:

duplicate symbol reference: __moddi3 in both github.com/d2g/unqlitego(.text) and github.com/mattn/go-sqlite3(.text)

Я бегу версия go1.3.1 выбирали и окна/386.

Я что-то не так? Как бы вы решили эту проблему?

Является ли это ошибкой OS/Go версии/архитектуры? (Я буду благодарен за «это работает для меня» с выходом вашего go version)

Я положил все это на репо, чтобы вы могли просто go get github.com/d2g/issue-duplicate_symbol.

Согласно комментариям выглядит как проблема Windows, 386 вошли в систему: https://code.google.com/p/go/issues/detail?id=8702

+0

Darn: go version go1.3.1 windows/amd64, но у меня нет 'gcc' на моем'% PATH% '. Возможно, у вас есть 'sqlite3.dll' где-то еще на вашем диске, что может помешать в этой компиляции? – VonC

+0

Если я комментирую любую библиотеку, она компилируется. Что предполагает, что это связано с тем, как они взаимодействуют во время компиляции? – DanG

+0

Странно, потому что Go обычно делает магию, чтобы совместить имена символов C, пока они обернуты отдельными пакетами. – LinearZoetrope

ответ

1

@AndrewN отмечает, что это конкретный вопрос для Windows: см golang.org/issue/8756 или оригинальный вопрос на code.google.com/p/go/issues/detail?id=8756, не будет исправлено до версии 1.5.

(Документирование, так что это не похоже на неотвеченный вопрос).

 Смежные вопросы

  • Нет связанных вопросов^_^