#1
by 焼肉 » 2年前
GoogleのC++のコーディング規約に則ってDXライブラリの関数のラッピングをしています。
といっても大文字で始まる関数の頭文字を小文字に直すだけなのですが、関数の引数が可変調の場合のやり方で詰まってしまいました。
ラッピングを行いたいのはDXライブラリのGraphFilter関数とGraphFilterBlt関数でソースを見た所以下のようになっていました。
コード:
extern DXLIBAPI int GraphFilter(int GrHandle, int FilterType /* DX_GRAPH_FILTER_GAUSS 等 */ , ... ) ; // 画像にフィルター処理を行う
同じような質問が既に上がっていたので見てみたのですが、失敗してしまいました。
StackOverFlow
以下のやり方だとエラーになってしまいます。
コード:
template <typename ... Args>
int graphFilter(int graph_handle, int filter_type, Args const & ... args) {
return GraphFilter(graph_handle, filter_type, args ...);
}
エラー内容
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int>(int, int, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int, int, int, int>(int, int, int const&, int const&, int const&, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int, int, int, int>(int, int, int const&, int const&, int const&, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int>(int, int, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int>(int, int, int const&, int const&)
これはどのように書けば可変調の引数を持つ関数をラッピング出来るでしょうか?
GoogleのC++のコーディング規約に則ってDXライブラリの関数のラッピングをしています。
といっても大文字で始まる関数の頭文字を小文字に直すだけなのですが、関数の引数が可変調の場合のやり方で詰まってしまいました。
ラッピングを行いたいのはDXライブラリのGraphFilter関数とGraphFilterBlt関数でソースを見た所以下のようになっていました。
[code]
extern DXLIBAPI int GraphFilter(int GrHandle, int FilterType /* DX_GRAPH_FILTER_GAUSS 等 */ , ... ) ; // 画像にフィルター処理を行う
[/code]
同じような質問が既に上がっていたので見てみたのですが、失敗してしまいました。
[url=https://stackoverflow.com/questions/1657883/variable-number-of-arguments-in-c]StackOverFlow[/url]
以下のやり方だとエラーになってしまいます。
[code]
template <typename ... Args>
int graphFilter(int graph_handle, int filter_type, Args const & ... args) {
return GraphFilter(graph_handle, filter_type, args ...);
}
[/code]
エラー内容
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int>(int, int, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int, int, int, int>(int, int, int const&, int const&, int const&, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int, int, int, int>(int, int, int const&, int const&, int const&, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int>(int, int, int const&, int const&)
wasm-ld: error: build/LiquidEffect.o: undefined symbol: int graphFilter<int, int>(int, int, int const&, int const&)
これはどのように書けば可変調の引数を持つ関数をラッピング出来るでしょうか?